2016-06-14 7 views
0

ウェブサイトから情報を取得するための小さなスクリプトに取り組んでいます。私はHTTPエラーに問題があります。python urllib.request - 動作する可能性が高いヘッダー

req = urllib.request.Request(lnk['href'], 
    headers={'User-Agent': 'Mozilla/5.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'}) 
page = urllib.request.urlopen(req) 

このトリエステフェッチする、例えば、http://www.guru99.com/node-js-tutorial.htmlは、私は406受け入れられないで終わる、エラーの長いシリーズを得る:

Traceback (most recent call last): 
    File "get_links.py", line 45, in <module> 
    page = urllib.request.urlopen(req) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 162, in urlopen 
    return opener.open(url, data, timeout) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 471, in open 
    response = meth(req, response) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 581, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 509, in error 
    return self._call_chain(*args) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 443, in _call_chain 
    result = func(*args) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 589, in http_error_default 
    raise HTTPError(req.full_url, code, msg, hdrs, fp) 
urllib.error.HTTPError: HTTP Error 406: Not Acceptable 

私は(とヘッダを修正する必要があることを私が発見した周りのグーグル私は上記で行った)とヘッダーを修正する方法についてのチュートリアルがたくさんあります。例外はありません。

ほとんどのサイトで問題にならないような良いヘッダーがいくつかありますか?誰かが作成したPythonモジュールが既に作成されていますか?あなたが良い応答を得るまで、さまざまなヘッダーで何回か再試行する良い方法はありますか?

これはPythonを使ったWebスクラップを行うすべての人に問題があるようですが、まともな解決法を見つけられませんでした。

答えて

0

次のヘッダーセットは、ほとんどのテストで機能しているようです。誰か他に提案がある場合は、それらを提供してください。私はまた、1つのセットが動作しない場合、異なるヘッダーを試すための良いソリューションにも興味があります。

req = urllib.request.Request(lnk['href'], 
    headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'}) 
page = urllib.request.urlopen(req) 
0

私はあなたのコードを試してみましたが、期待されるように私は同じエラーを取得します。

私はまた私のクロムのブラウザが提供するユーザエージェントでそれを試してみましたが、これは、HTTP 200(成功)を返された明示的なヘッダを通過せずにテストを...

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36 

を仕事とも実行しているようです。これは、ライブラリによって提供されるデフォルトのヘッダーを使用します(例:

python-requests/2.10.0 

が、これは

を役に立てば幸い
関連する問題