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をインストールするという手順を入れると解決しました。
サンプルコードは以下になります。
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スクレイピング(オライリー社)