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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

2471閲覧

python requestsモジュールを使ってwebページをダウンロードしたいが失敗する

dokidoki_hamuo

総合スコア38

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/07/29 05:46

編集2019/07/29 05:50

質問

webページをダウンロードするコードについて。
オライリージャパンからでている書籍を購入し例文のまま打ち込んでいたのですがうまくいきませんでした。

原因を調べてみたらプロキシが邪魔しているようなので、プロキシの設定をしたらとりあえずエラーは起きなかったのですが指定したWebのダウンロードはできていませんでした。

冒頭250文字を表示させてみると、文字が返ってくるので何かをダウンロードしてきたみたいなのですが、内容を見てもよくわかりませんでした。

なぜこんなことが起きたのか原因をお分かりの方いらっしゃいましたらご回答お願いいたします。

追記---
また、どういう経緯でこの文字列をダウンロードしてきたのか、教えていただけると大変助かります。

windows10
Python 3.7.3

python

1>>>import os 2>>>import requests 3 4>>>os.environ['http_proxy'] = 'http://userID12345:8888' 5>>>res = requests.get('http://automatetheboringstuff.com/files/rj.txt') 6>>>type(res) 7<class 'requests.models.Response'> 8>>> res.status_code ==requests.codes.ok 9False 10>>> len(res.text) 111277 12>>> print(res.text[:250]) 13<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 14<html xmlns="http://www.w3.org/1999/xhtml"> 15<head> 16<meta http-equiv="Content-Type" content="text/html; charset=shift_jis"/> 17<title>404 -

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

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

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

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

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

tetsunosuke

2019/07/29 05:55

普通、プロキシの設定は、 http://user:pass@server:port 形式で@が入るのかなと思うのですが、設定は正しいですか? >>> res.status_code ==requests.codes.ok False であることや、 404 というのも出ているので、Not Foundのエラーが出ていると思います。 >>> res.status_code は、 404 になっているかと思います。
dokidoki_hamuo

2019/07/29 05:57

そうなんですねー!! ではおそらくプロキシの設定原因かと思われます。プロキシの設定方法を再度調べてみてもう一度同じことをしてみようと思います。 BAにさせていただきたいと思いますので、ご回答して頂けると助かります。
tetsunosuke

2019/07/29 06:18

アンサーとするかどうかは解決してからで構わないです。 別の回答もついていますし。 回答がついているほうの404エラーについては、接続しているプロキシサーバが正しければ、URLが貼り付けられたそのものだとしたら、print(res.text[:250]) で提示されたようなものにはならないと思うので、ちょっと違いそうな気がしています。
dokidoki_hamuo

2019/07/29 06:24

なるほど!!! 調べてみたらどうやら設定が間違えていたようです。おっしゃる通り形式がおかしいことがわかりました。プロキシ設定がうまくいくようpythonと戦ってみます。 また何かありましたら、ご教授頂けると助かります。ありがとうございます!!!
dokidoki_hamuo

2019/07/29 06:30

すみません、自動構成スプリクトの場合も http://user:pass@server:port という形式になるのでしょうか?? 見当違いな質問でしたら申し訳ありません。ご回答いただけると大変助かります。
dokidoki_hamuo

2019/07/29 06:58

できましたーーー!!! 二つ目のサイトを参考にできました!! いろいろ調べましたがご提示して頂いたサイトをみつけられなかったので助かりました!!! ありがとうございます!!!! BAにしたいのでご回答お願いいたします!!
tetsunosuke

2019/07/29 07:07

お、解決してよかったです。 それっぽくまとめて記載したのでご確認ください。
guest

回答2

0

ベストアンサー

プロキシの設定が間違っているようです。 http://user:pass@server:port
形式となるはずです。PACファイルを用いている場合は、

https://2.python-requests.org/en/master/user/advanced/#id10 こちらなどを参考に、

python3

1import requests 2 3proxies = { 4 'http': 'http://10.10.1.10:3128', 5 'https': 'http://10.10.1.10:1080', 6} 7 8requests.get('http://example.org', proxies=proxies)

のようにしてください。

また、どういう経緯でこの文字列をダウンロードしてきたのか、教えていただけると大変助かります。

こちらについてはプロキシがエラーを(HTML形式で)表示しているからだと思われます。

正常にサーバに接続できていたとしたら、ファイルが見つからない場合

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> (省略)

という文字列が出てくるはずです。(あまりテストすべきではないですが、http://automatetheboringstuff.com/notfound に接続してみて返ってきた結果)

なので、プロキシへの接続に問題があると考えます。

ちなみに、

>>> res.status_code ==requests.codes.ok False

であることや、

404 というのも出ているので、Not Foundのエラーが出ていると思います。

>>> res.status_code

は、 おそらく、404 になっていると思います。

投稿2019/07/29 07:05

編集2019/07/29 07:08
tetsunosuke

総合スコア1292

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

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

0

HTMLで表示されている結果を見る限り、404エラーのようですね。
指定されたURLにリソースが存在しないようです。
URLを間違えていませんか?

投稿2019/07/29 05:50

mather

総合スコア6753

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

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

dokidoki_hamuo

2019/07/29 05:52

ご回答ありがとうございます! URLを直接貼り付けたらちゃんと飛べました。 404エラーというものがあるのですね。調べてみます。ありがとうございます。
mather

2019/07/29 05:54

res.status_code を直接表示してみるとわかります。 404という数値の意味については「HTTPステータスコード」を調べてみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問