前提・実現したいこと
UbuntuServerを勉強中です。
実現したいこと
UbuntuServer上で下記のPythonプログラムを実行したいです。
Python
1import requests 2from bs4 import BeautifulSoup 3url = 'https://www.yahoo.co.jp/' 4res = requests.get(url) 5soup = BeautifulSoup(res.text, 'html.parser') 6print(soup.prettify()) 7input()
前提条件
・上記プログラムはWindows10で動作することを確認しています。
・requestsモジュールを使ったプログラムが実行できないです。
・リクエストモジュールを使用しないプログラムは動作することを確認しました。
・www.yahoo.co.jpにpingコマンドを打つと帰ってくるので通信経路上の問題ではない?と思っています。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn conn = connection.create_connection( File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection raise err File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection sock.connect(sa) TimeoutError: [Errno 110] Connection timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 699, in urlopen httplib_response = self._make_request( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 382, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1012, in _validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 353, in connect conn = self._new_conn() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 181, in _new_conn raise NewConnectionError( urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0xffffb8fea490>: Failed to establish a new connection: [Errno 110] Connection timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send resp = conn.urlopen( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 755, in urlopen retries = retries.increment( File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 574, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.yahoo.co.jp', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0xffffb8fea490>: Failed to establish a new connection: [Errno 110] Connection timed out')) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/masterak/Share/restest.py", line 4, in <module> res = requests.get(url) File "/usr/lib/python3/dist-packages/requests/api.py", line 76, in get return request('get', url, params=params, **kwargs) File "/usr/lib/python3/dist-packages/requests/api.py", line 61, in request return session.request(method=method, url=url, **kwargs) File "/usr/lib/python3/dist-packages/requests/sessions.py", line 542, in request resp = self.send(prep, **send_kwargs) File "/usr/lib/python3/dist-packages/requests/sessions.py", line 655, in send r = adapter.send(request, **kwargs) File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send raise ConnectionError(e, request=request) requests.exceptions.ConnectionError: HTTPSConnectionPool(host='www.yahoo.co.jp', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0xffffb8fea490>: Failed to establish a new connection: [Errno 110] Connection timed out'))
試したこと
pipからpip3で再度インストール
モジュールのアップグレード
探し方が悪いのか、ネット上では解決策が見つけられませんでした。
原因などを知っている方がいれば教えていただける幸いです。
補足情報(FW/ツールのバージョンなど)
python3 --version
Python 3.9.7
Ubuntuのバージョン
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=21.10
DISTRIB_CODENAME=impish
DISTRIB_DESCRIPTION="Ubuntu 21.10"
リクエストモジュールのVer
requests 2.26.0
###追記事項
2021/11/08
質問に来ていたhostコマンドの実行結果です。
$host www.yahoo.co.jp www.yahoo.co.jp is an alias for edge12.g.yimg.jp. edge12.g.yimg.jp has address 183.79.250.251
自分でも調べていくつか試しましたがダメでした
/etc/systemed.cnf のDNSサーバーを8.8.8.8に変更
FirewallのDNSポートの開放
/etc/netplan のDNSを追加
2021/11/08
curl 7.74.0
wget GNU Wget 1.21 built on linux-gnu.
curlコマンドの接続結果です。
$ curl https://www.yahoo.co.jp curl: (28) Failed to connect to www.yahoo.co.jp port 443: 接続がタイムアウトしました
$ curl https://www.google.com/
HTMLデータの取得に成功しました。
ついでに阿部寛さんのホームページの取得もできました
curl http://abehiroshi.la.coocan.jp/
Yahooだけ出来ません。
上記の結果をPythonに反映したところ
Python
1import requests 2from bs4 import BeautifulSoup 3url = 'https://www.google.com/' 4res = requests.get(url) 5soup = BeautifulSoup(res.text, 'html.parser') 6print(soup.prettify()) 7input()
エラーは出力されず、GoogleのHTMLデータを取得出来ました。
PS
requestsモジュールを動かすという目標は達成できたのですが、Yahooのデータを取得できないのは困るのですが、これは別の質問を作ったほうが良いのでしょうか?
回答2件
あなたの回答
tips
プレビュー