2009-11-26 27 views
0

我正在寫一個履帶。抓取工具登錄到網站後,我想讓抓取工具「始終保持登錄狀態」。我怎樣才能做到這一點?客戶端(如瀏覽器,爬蟲等)是否使服務器遵守此規則?當服務器在一天內允許有限的登錄時,可能會發生這種情況。寫入爬蟲,保持與任何服務器登錄

回答

5

「登錄狀態」通常由Cookie表示。因此,您必須做的是在登錄時存儲該服務器發送的cookie信息,然後將該cookie隨每個後續請求一起發送(如Aiden Bell在其消息中所述,thx)。

也看到這個問題:

How to "keep-alive" with cookielib and httplib in python?

一個更全面的文章就如何實現它:

http://www.voidspace.org.uk/python/articles/cookielib.shtml

最簡單的例子是,在本手冊頁的底部:

https://docs.python.org/library/cookielib.html

您也可以使用常規瀏覽器(如Firefox)手動登錄。然後,您就可以從該瀏覽器中保存cookie,並將其用於抓取工具中。但是這些cookies通常只在有限的時間內有效,所以它不是一個長期的全自動化解決方案。但是,從網站下載內容可能非常方便。

UPDATE:

我只是發現在最近的問題的另一個有趣的工具:

http://www.scrapy.org

它也可以做這樣的基於cookie登錄:

http://doc.scrapy.org/topics/request-response.html#topics-request-response-ref-request-userlogin

我提到的問題在這裏:

Scrapy domain_name for spider

希望這會有所幫助。

+1

+1:然後再次發送cookie。 – 2009-11-26 15:25:59

+1

另外,他可能必須在會話中添加零星的活動來阻止它過期。 – 2009-11-26 15:26:58

+0

即使您添加零星活動,會話也會因會話生存期中的服務器端「限制」而失效。因此,長期的解決方案是允許爬蟲根據需要登錄。但是,只要服務器允許會話(實質上)無限制的生存期,使用手動登錄並保持活動狀態的cookie從瀏覽器保存就更簡單了。 – fviktor 2009-11-26 16:40:10