1

こんにちはみんな!Pythonスクリプトを介してWebページにアクセスしたい。URL はhttp://www.idealo.de/preisvergleich/Shop/27039.htmlです。

WebブラウザからアクセスするとOKです。しかし、urllib2 でアクセスしたい場合:

a = urllib2.urlopen("http://www.idealo.de/preisvergleich/Shop/27039.html")

次のエラーが表示されます。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 406, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 519, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 444, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 527, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden

また、wgetでアクセスしようとしました:

wget http://www.idealo.de/preisvergleich/Shop/27039.html

エラーは次のとおりです。

--2012-04-23 12:42:03--  http://www.idealo.de/preisvergleich/Shop/27039.html
Resolving www.idealo.de (www.idealo.de)... 62.146.49.133
Connecting to www.idealo.de (www.idealo.de)|62.146.49.133|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2012-04-23 12:42:03 ERROR 403: Forbidden.

なぜそうなのか、誰か説明できますか?また、Python を使用してアクセスするにはどうすればよいですか?

4

1 に答える 1

5

一部のユーザー エージェントをブロックしています。次のようにしてみると:

wget -U "Mozilla/5.0" http://www.idealo.de/preisvergleich/Shop/27039.html

できます。そのため、Python コードでユーザー エージェントを偽装して機能させる方法を見つける必要があります。

これを試して:

import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
a = opener.open("http://www.idealo.de/preisvergleich/Shop/27039.html")
于 2012-04-23T10:50:53.620 に答える