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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ubuntu

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

Python

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

Q&A

解決済

2回答

5399閲覧

UbuntuServer上でPythonのrequestsモジュールを使ったプログラムが実行できない

退会済みユーザー

退会済みユーザー

総合スコア0

Ubuntu

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

Python

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

0グッド

0クリップ

投稿2021/11/07 12:04

編集2021/11/07 15:53

前提・実現したいこと

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のデータを取得できないのは困るのですが、これは別の質問を作ったほうが良いのでしょうか?

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

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

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

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

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

melian

2021/11/07 12:36

TimeoutError: [Errno 110] Connection timed out と表示されていますので、ネットワーク接続の問題ではないでしょうか。UbuntuServer上のコマンドラインで host www.yahoo.co.jp を実行してみて下さい(DNS的な名前解決ができるのかどうかを確認するためです)。
退会済みユーザー

退会済みユーザー

2021/11/07 13:00

ありがとうございます!名前解決という方法があるのですね! もう少し自分で調べてみます。 下記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
melian

2021/11/07 15:18

ごめんなさい、ping が成功している部分を読み飛ばしていました。DNS 関連で手間を取らせてしまい、どうもすみません。ところで、 その UbuntuServer には curl コマンドか wget コマンドはインストールされていますか?
退会済みユーザー

退会済みユーザー

2021/11/07 15:22

インストールされていません。
退会済みユーザー

退会済みユーザー

2021/11/07 15:25

すみません、入っていました。初期から入っているようです。 curl 7.74.0 wget GNU Wget 1.21 built on linux-gnu.
退会済みユーザー

退会済みユーザー

2021/11/07 15:29

curlコマンドの接続結果です。 $ curl https://www.yahoo.co.jp curl: (28) Failed to connect to www.yahoo.co.jp port 443: 接続がタイムアウトしました
dameo

2021/11/08 13:45

IP BANされちゃってるのではないでしょうか? もしBANされるほど繰り返しリクエストしてしまったのだとすると、犯罪の範疇に入るかもしれませんね
guest

回答2

0

ベストアンサー

2021/11/21 自己解決

原因はよくわかっていませんが、一応自己解決したので記述しておきます。
###症状
特定のサイトに接続できない(www.yahoo.co.jp httpbin.org etc...)
Goolgle Youtube WikipediaなどIPv6対応のサイトにはアクセスできる。
www.yahoo.co.jp にpingコマンドは通る。
curlコマンドを打つとerror(28) timeoutと出力される。
RaspberryPi OS PiOSLite UbuntuServer すべてのOSで同上の現象がおきる。
###解決策
CUIでの解決が難しかったのでUbuntuDesktopにて解決しました。
設定→ネットワーク→有線設定→Identityの項目を選択

名前(N):eth0 MACアドレス(M): XX:XX:XX:XX:XX:XX(eth0) クローンしたアドレス(C):Stable MTU(T):自動

に設定したところ解決しました。

ラズパイのNIC周りに少々問題があったようです。

###バージョン情報
使用端末:RaspberryPi 4B 8GB
Ubuntu Desktop 21.10 for Raspberry Pi

投稿2021/11/21 06:52

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ubuntuの場合はバージョン古いけどpackageでインストールしている

sudo apt install python3-pip python3-dev python3-tk python3-venv python3-bs4 python3-requests python3-html5lib

投稿2021/11/07 23:07

barobaro

総合スコア1286

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問