我試圖使用機械化從網頁獲取信息。它基本上取得了第一批信息的成功,但該網頁包含一個「Next」按鈕以獲取更多信息。我無法弄清楚如何以編程方式獲取附加信息。Python機械化阻止連接:關閉
通過使用Live HTTP Headers,我可以看到當我單擊瀏覽器中的下一個按鈕時生成的http請求。看起來好像我可以使用機械化發出相同的請求,但在後一種情況下,我沒有獲取下一頁,而是重定向到網站的主頁。
很明顯,機械化正在做一些不同於我的瀏覽器的東西,但我無法弄清楚什麼。在比較了頭,我沒有找到一個差異,這是瀏覽器中使用
連接:保持活躍
而機械化使用
連接:關閉
我不知道這是罪魁禍首,但是當我試圖添加標題('Connection','keep-alive')時,它沒有改變任何東西。
[UPDATE] 當我點擊按鈕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
當我嘗試請求機械化內相同的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
- 達里爾
如果這是個問題,那將會很奇怪。 「連接」標題只是表示服務器是否應該保持連接打開以發送另一個網頁。這裏瀏覽器正在請求連接保持打開狀態,以便它可以下載圖像等,但是機械化不需要這樣做,因此它可以告訴服務器它已完成,並且在下次加載頁面時將請求新的連接。如果您可以對這兩個請求進行更完整的記錄,可能會有所幫助。 –
謝謝,我已更新我的問題以包含更多信息。部分問題是「下一步」按鈕不僅僅是一個url,它是一個javascript調用,但最終javascript會導致一個http請求,所以看起來我應該能夠直接在機械化內發出這個請求。 –
不發佈答案,因爲我只是猜測,但服務器可能正在檢查'X-Requested-With'和/或'X-Prototype-Version'。看看你是否可以複製機械化。 –