-2

Python を使用して Web ページにアクセスすると問題が発生します -- HTTP エラー 403 がスローされます。ブラウジング スタック オーバーフローの後、他の多くのユーザーが同じエラーに遭遇し、リクエストのヘッダーを変更することで解決していることがわかりました。これを試しましたが、それでもエラーが発生します。

これが私のコードです:

req = urllib2.Request("http://www.mozilla.org")
req.add_header('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8a3) Gecko/20040817')

try:
    response = urllib2.urlopen(req)
except urllib2.URLError, (err):
    print "URL error(%s)" % (err)

編集:これは私のコードのより大きなチャンクであり、ウェブクローラーの始まりです。また、http://www.mozilla.org をテスト URL として使用していますが、google や yahoo などの他の URL では機能しないようです。

#!/usr/bin/python

import sys
import urllib2
import urlparse
tocrawl = set([sys.argv[1]])
crawled = set([])

while 1:
    try:
        crawling = tocrawl.pop()
        print 'Crawling: ', crawling
    except KeyError:
        print 'No more to crawl!'
        raise StopIteration

    url = urlparse.urlparse(crawling)
    print 'Url parse returned ', url

    req = urllib2.Request(crawling)
    req.add_header('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8a3) Gecko/20040817')
    print 'header: ', req.get_header('User-agent')

    try:
        print 'test'
        response = urllib2.urlopen(req)
        print 'test2'
        print 'response: ', response
    except urllib2.URLError, (err):
        print "URL error(%s)" % (err)
        continue

    msg = response.read()
4

1 に答える 1

0

修繕。問題は、必要なプロキシを設定していなかったことです。回答ありがとうございます。

修正するために、次のコード スニペットを追加しました。

proxy_info = urllib2.ProxyHandler({'http' : "proxy:80"})
opener = urllib2.build_opener(proxy_info)
urllib2.install_opener(opener)
于 2012-06-13T16:53:41.903 に答える