Posted at

PythonのWebスクレイピングでProxy設定のため応答がなかったときの対処

More than 1 year has passed since last update.


Pythonでスクレイピングで必要なWeb情報を自動抽出するプログラムを作成しようとしたときにエラーではまってしまったときの対処を備忘録として残しておきます。

PythonのurllibとBeautifulsoupによりWebスクレイピングプログラムを作ろうとしていました。

しかし、最初のurllib.request.urlopen(...)による応答が得られないエラー(以下のようなメッセージが表示される)が発生しました。

「一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。」

調べているとProxyサーバーの存在により、通信が確立されていないようです。

ProxyはInternet Explorerで以下のようになっていました。


  • [ツール]->[インターネットオプション]->[接続]->[LANの設定]


  • 自動構成スクリプトを使用する


自動構成スクリプトは、 http://proxy.-----.co.jp/proxy.pacとなっていました。

 (-----は実際のものでなく、伏字にしています。)

urlopenする前に、urllib.requestに対して、ProxyHandlerを用意して、build_openerに設定し、build_openerをインストールするという手順を入れると解決しました。

サンプルコードは以下になります。


scrapetest.py

import urllib.request

proxies ={'http':'http://proxy.-----.co.jp/proxy.pac'}
proxy_handler = urllib.request.ProxyHandler(proxies)
opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)
html = urllib.request.urelopen("http://wwww.pythonscraping.com/pages/page1.html")
print(html.read())

開発環境は、WindowsでAnacondaによるPython3.5.2です。

Webスクレイピングのプログラミングについては、下の本で学習します。

 PythonによるWebスクレイピング(オライリー社)