質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

2回答

5922閲覧

さくらVPSのubuntuにてseleniumを使おうとするとタイムアウトエラー

hilowkey

総合スコア29

さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2023/05/07 05:45

編集2023/05/08 12:43

エラー内容をブラウザ検索、teratailで検索しても全く出てこず、
エラー内容も意味不明で
全く解決ができそうにないのでもしどなたかご存知でしたらご教授ください:person_bowing:

現在さくらVPS上でpythonを使いseleniumでスクレイピングを行おうとしているところです。

環境:
ubuntu 22.04
python 3.9.1
selenium 3.141.0
chrome 113.0.5672.63

エラー内容:
ValueError: Timeout value connect was <object object at 0x7f186ac34390>, but it must be an int, float or None.

python

1import requests 2import re 3from bs4 import BeautifulSoup 4from wordpress_xmlrpc import Client, WordPressPost 5from wordpress_xmlrpc.methods.posts import GetPosts, NewPost 6from wordpress_xmlrpc.methods.users import GetUserInfo 7from wordpress_xmlrpc.methods import media 8import json 9import os 10import datetime 11import time 12 13import os 14import glob 15import cv2 16import ssl 17import string 18import io 19from PIL import Image, ImageOps 20from requests_oauthlib import OAuth1Session 21import urllib.request 22 23from selenium import webdriver 24import chromedriver_binary 25from time import sleep 26from webdriver_manager.chrome import ChromeDriverManager 27import pandas as pd 28from selenium.webdriver.support.ui import WebDriverWait 29from selenium.webdriver.support import expected_conditions as EC 30 31from selenium.webdriver.support.select import Select 32from ast import literal_eval 33from pprint import pprint 34from requests.exceptions import Timeout 35from timeout_decorator import timeout, TimeoutError 36from selenium.webdriver.chrome.options import Options # オプションを使うために必要 37 38from selenium.webdriver.chrome import service as fs 39import numpy as np 40from PIL import Image 41 42 43 44from selenium.webdriver.chrome.service import Service as ChromeService 45from webdriver_manager.chrome import ChromeDriverManager 46 47options = webdriver.ChromeOptions() 48options.add_argument('--headless') 49options.add_argument('window-size=1920,1080') # ヘッドレスモードの設定を付与 50options.add_experimental_option("excludeSwitches", ["enable-automation"]) 51options.add_experimental_option('useAutomationExtension', False) 52options.add_experimental_option('prefs', { 53 'credentials_enable_service': False, 54 'profile': {'password_manager_enabled': False} 55}) 56options.add_argument('--no-sandbox') 57options.add_argument('--disable-dev-shm-usage') 58options.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36') 59 60browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=options) 61 62# 最大の読み込み時間を設定 今回は最大15秒待機できるようにする 63wait = WebDriverWait(driver=browser, timeout=15) 64 65browser.set_window_size('1920', '1080') 66browser.get(url)

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mike2mike4

2023/05/07 08:40

そのサイトはスクレイピング許可されてますか? スクレイピングに気づいた管理者が禁止IPリストに入れたのではないでしょうか?
hilowkey

2023/05/07 09:16

コメントいただきましてありがとうございます。 そちらに関しては大丈夫です。 また、念の為そちらの可能性も懸念して私の所持しているサイトのURLでも試してみましたが 同じエラー文でした。
otn

2023/05/07 12:07

エラーメッセージに行番号の情報が無かったと言うことでしょうか? しかし、Python処理系の出しているメッセージっぽいので、あるのではと思うのですが。
hilowkey

2023/05/07 12:39 編集

行番号の記載はなく、試しにprintでどこで引っ掛かっているのか試しましたら、60行目の browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=options) の部分でした。 ディレクトリパスは間違っておりません。 エラー分をそのままコピペで検索したりもしたのですが、同じものは引っかからずでした。
otn

2023/05/07 14:04

とりあえず、Selenium関係以外のimportを全部削除して確認しましょう。 timeoutとか怪しい。 また、ヘッドレスでgetしただけだと、getが成功したかどうかすらわからないので、 browser.get(url) の後に、 print(browser.page_source) を入れましょう。
hilowkey

2023/05/07 14:14 編集

ご丁寧に対応いただきましてありがとうございます。 今Selenium以外のimportをコメントアウト、browser.get(url) の後に、 print(browser.page_source)を 入れて実行してみましたがやはり変わらず表示はされていないのでその手前の60行目の browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=options) の部分で引っ掛かっているようです。 Google chromeなどのバージョンも合わせており、Seleniumのバージョンも4だとエラーが起きやすいとのことだったので3にしているのですが・・・ ここ数日間ずっとここで躓いている為、一度MENTAにてサポートを依頼することにしました。 また解決したらこちらに記載させていただきます。
otn

2023/05/07 14:33

原因がよくわからない場合は、絞り込みます。 回答欄に書くコードで確認しましょう。
guest

回答2

0

自己解決

pythonのバージョンを3.8.1に落としてやれば解決いたしました!

3.9以降大きな改変が入り、変なエラーが起きやすくなったみたいです。

投稿2023/05/08 15:28

hilowkey

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

下記のコードではどうでしょうか?urlは変えても良いですが、それ以外はコピペで。
実行は、対話型環境とかじゃなくて、python ファイル名でやってますよね?

その1:不使用 import 削除

Python

1from selenium import webdriver 2from selenium.webdriver.support.ui import WebDriverWait 3 4options = webdriver.ChromeOptions() 5options.add_argument('--headless') 6options.add_argument('window-size=1920,1080') # ヘッドレスモードの設定を付与 7options.add_experimental_option("excludeSwitches", ["enable-automation"]) 8options.add_experimental_option('useAutomationExtension', False) 9options.add_experimental_option('prefs', { 10 'credentials_enable_service': False, 11 'profile': {'password_manager_enabled': False} 12}) 13options.add_argument('--no-sandbox') 14options.add_argument('--disable-dev-shm-usage') 15options.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36') 16 17browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=options) 18 19# 最大の読み込み時間を設定 今回は最大15秒待機できるようにする 20wait = WebDriverWait(driver=browser, timeout=15) 21 22url = "https://teratail.com" 23browser.set_window_size('1920', '1080') 24browser.get(url) 25print(browser.page_source) 26print("OK") 27browser.quit()

その2:optionsを最低限に。

Python

1from selenium import webdriver 2 3options = webdriver.ChromeOptions() 4options.add_argument('--headless') 5 6browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=options) 7 8url = "https://teratail.com" 9browser.get(url) 10print(browser.page_source) 11print("OK") 12browser.quit()

投稿2023/05/07 14:45

otn

総合スコア85101

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hilowkey

2023/05/08 12:42

詳細にご提案いただき誠にありがとうございます。 只今どちらも試したところ、こちらのエラー内容でした。 やはり何かバージョン関係か、クロームの互換性など何かそのような問題な気がしてきました・・・ エラー内容は以下になります。 Traceback (most recent call last): File "/home/ubuntu/zikkofile/test.py", line 6, in <module> browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=options) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/selenium/webdriver/chrome/webdriver.py", line 76, in __init__ RemoteWebDriver.__init__( File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 319, in execute response = self.command_executor.execute(driver_command, params) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/selenium/webdriver/remote/remote_connection.py", line 374, in execute return self._request(command_info[0], url, body=data) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/selenium/webdriver/remote/remote_connection.py", line 397, in _request resp = self._conn.request(method, url, body=body, headers=headers) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/_request_methods.py", line 118, in request return self.request_encode_body( File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/_request_methods.py", line 217, in request_encode_body return self.urlopen(method, url, **extra_kw) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/poolmanager.py", line 422, in urlopen conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/poolmanager.py", line 303, in connection_from_host return self.connection_from_context(request_context) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/poolmanager.py", line 328, in connection_from_context return self.connection_from_pool_key(pool_key, request_context=request_context) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/poolmanager.py", line 351, in connection_from_pool_key pool = self._new_pool(scheme, host, port, request_context=request_context) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/poolmanager.py", line 265, in _new_pool return pool_cls(host, port, **request_context) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/connectionpool.py", line 196, in __init__ timeout = Timeout.from_float(timeout) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/util/timeout.py", line 190, in from_float return Timeout(read=timeout, connect=timeout) File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/util/timeout.py", line 119, in __init__ self._connect = self._validate_timeout(connect, "connect") File "/home/ubuntu/.pyenv/versions/3.9.1/lib/python3.9/site-packages/urllib3/util/timeout.py", line 156, in _validate_timeout raise ValueError( ValueError: Timeout value connect was <object object at 0x7fcaaadea710>, but it must be an int, float or None.
otn

2023/05/08 13:54

その2でも駄目だとちょっとわからないですね。 シェルコマンドラインから、フルパスでなく、単に google-chrome --version と実行して正常にバージョンが表示されますか?
hilowkey

2023/05/08 15:27

只今MENTAにて解決できました! pythonのバージョンを3.8.1に落としてやれば解決いたしました! 3.9以降大きな改変が入り、変なエラーが起きやすくなったみたいです。
hilowkey

2023/05/08 15:28

本当に丁寧にご回答いただきましてありがとうございました🙇
otn

2023/05/09 04:31

解決して何よりですが、下記で問題なく動いています。 $ cat /etc/redhat-release CentOS Stream release 8 $ python -V Python 3.9.16 $ chromedriver --version ChromeDriver 113.0.5672.63 $ google-chrome --version Google Chrome 113.0.5672.63
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問