0

URL を開こうとすると、Mechanize で 406 エラーが発生します。

for url in urls:
    if "http://" not in url: 
        url = "http://" + url
    print url
    try:
        page = mech.open("%s" % url)
    except urllib2.HTTPError, e:
        print "there was an error opening the URL, logging it"
        print e.code
        logfile = open ("log/urlopenlog.txt", "a")
        logfile.write(url + "," + "couldn't open this page" + "\n")
        continue
    else:
        print "opening this URL..."
        page = mech.open(url)

406 エラーが発生する原因は何ですか? 問題の URL にアクセスすると、ブラウザで開くことができます。

4

2 に答える 2

2

ブラウザーの送信内容に基づいて、要求にヘッダーを追加してみてください。ヘッダーを追加することから始めAcceptます (通常、406 は、サーバーが受け入れたいものを気に入らなかったことを意味します)。

ドキュメントの「ヘッダーの追加」を参照してください。

req = mechanize.Request(url)
req.add_header('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
page = mechanize.urlopen(req)

そこAcceptにあるヘッダー値は、Chrome から送信されたヘッダーに基づいています。

于 2012-12-22T21:53:43.813 に答える