1

mechanize を使用して Web ページから情報を取得しようとしています。基本的には最初の情報を取得することに成功していますが、Web ページにはさらに情報を取得するための「次へ」のボタンが含まれています。プログラムで追加情報を取得する方法がわかりません。

ライブ HTTP ヘッダーを使用すると、ブラウザー内で [次へ] ボタンをクリックしたときに生成される http 要求を確認できます。mechanize を使用して同じリクエストを発行できるように見えますが、後者の場合、次のページを取得する代わりに、Web サイトのホームページにリダイレクトされます。

明らかに、mechanize は私のブラウザーとは異なることを行っていますが、何が原因かわかりません。ヘッダーを比較すると、1 つの違いが見つかりました。それは、使用されているブラウザーでした。

接続: キープアライブ

機械化しながら

接続: 閉じる

それが原因かどうかはわかりませんが、ヘッダー ('Connection','keep-alive') を追加しようとしても、何も変わりませんでした。

[更新] Firefox 内で「ページ 2」のボタンをクリックすると、生成された http は (ライブ HTTP ヘッダーによると):

GET /statistics/movies/ww_load/the-fast-and-the-furious-6-2012?authenticity_token=ItU38334Qxh%2FRUW%2BhKoWk2qsPLwYKDfiNRoSuifo4ns%3D&facebook_fans_page=2&tbl=facebook_fans&authenticity_token=ItU38334Qxh%2FRUW%2BhKoWk2qsPLwYKDfiNRoSuifo4ns%3D HTTP/1.1
Host: www.boxoffice.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/javascript, text/html, application/xml, text/xml, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
X-Prototype-Version: 1.6.0.3
Referer: http://www.boxoffice.com/statistics/movies/the-fast-and-the-furious-6-2012
Cookie: __utma=179025207.1680379428.1359475480.1360001752.1360005948.13; __utmz=179025207.1359475480.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __qca=P0-668235205-1359475480409; zip=13421; country_code=US; _boxoffice_session=2202c6a47fc5eb92cd0ba57ef6fbd2c8; __utmc=179025207; user_credentials=d3adbc6ecf16c038fcbff11779ad16f528db8ebd470befeba69c38b8a107c38e9003c7977e32c28bfe3955909ddbf4034b9cc396dac4615a719eb47f49cc9eac%3A%3A15212; __utmb=179025207.2.10.1360005948
Connection: keep-alive

mechanize 内で同じ URL をリクエストしようとすると、次のようになります。

GET /statistics/movies/ww_load/the-fast-and-the-furious-6-2012?facebook_fans_page=2&tbl=facebook_fans&authenticity_token=ZYcZzBHD3JPlupj%2F%2FYf4dQ42Kx9ZBW1gDCBuJ0xX8X4%3D HTTP/1.1
Accept-Encoding: identity
Host: www.boxoffice.com
Accept: text/javascript, text/html, application/xml, text/xml, */*
Keep-Alive: 115
Connection: close
Cookie: _boxoffice_session=ced53a0ca10caa9757fd56cd89f9983e; country_code=US; zip=13421; user_credentials=d3adbc6ecf16c038fcbff11779ad16f528db8ebd470befeba69c38b8a107c38e9003c7977e32c28bfe3955909ddbf4034b9cc396dac4615a719eb47f49cc9eac%3A%3A15212
Referer: http://www.boxoffice.com/statistics/movies/the-fast-and-the-furious-6-2012
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1

-- ダリル

4

2 に答える 2

1

X-Requested-Withサーバーはおよび/またはをチェックしX-Prototype-Versionていたので、これら 2 つのヘッダーを機械化リクエストに追加すると修正されました。

于 2013-02-04T20:03:23.160 に答える
0

答えが少し遅れているかもしれませんが、_urllib2_forked.pyに行を追加してこれを修正しました

1098行目は次の行を表しています:headers["Connection"] = "Close"

これを次のように変更します。

if not 'Connection' in headers: headers["Connection"] = "Close" スクリプトにヘッダーを設定すると、機能することを確認してください。

Gr. 浪費家

于 2016-02-05T12:51:52.387 に答える