標籤:

關於scrapy的crawlspider?

爬取網站的時候只能登陸才能獲得cookie?為什麼我不能在配置中直接從瀏覽器取得登陸後的cookie配置到cookiejar中?在網上查資料全部都是表單登錄,有必要嗎?


謝邀,今晚先寫寫關於cookie的部分,手機打字慢,先佔個坑。
話說,,光有感謝怎麼沒人贊。。雖然這種純技術問題一般比較冷門吧,好歹點了感謝的順手來個贊,,激勵我一下。。

###################正文開始的分界線###################

首先,爬取網站的時候並不只在登陸有cookie ,其次你也可以在配置中設置好從瀏覽器抓來的cookie 來跳過填表驗證的環節。之所以更多的是用表單登錄是因為cookie 是有生存周期的,不會一直生效。

至於如何在scrapy 中使用,手機寫不來明天給你補。雖然我並沒有在scrapy 中操作過,以前改寫中間間的時候有印象,不過在別的類型爬蟲中都運用過這種跳過的方式。

接下來是原理解析部分,慢慢寫。

###################原理分析的分界線###################

指某些網站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(通常經過加密)由網路伺服器發送出來以存儲在網路瀏覽器上,從而下次這位獨一無二的訪客又回到該網路伺服器時,可從該瀏覽器讀回此信息。這是很有用的,讓瀏覽器記住這位訪客的特定信息,如上次訪問的位置、花費的時間或用戶首選項(如樣式表)。Cookie 是個存儲在瀏覽器目錄的文本文件,當瀏覽器運行時,存儲在 RAM 中。一旦你從該網站或網路伺服器退出,Cookie 也可存儲在計算機的硬驅上。當訪客結束其瀏覽器對話時,即終止的所有 Cookie。

Cookies最典型的應用是判定註冊用戶是否已經登錄網站,用戶可能會得到提示,是否在下一次進入此網站時保留用戶信息以便簡化登錄手續,這些都是Cookies的功用

因此:你的第一個問題是可以解答了,任何時候都有cookie,不過你在登錄之後獲取到的cookie則會是保留你登錄狀態的cookie。


###################各種爬蟲代碼的分界線###################

1:scrapy:在spider中把你新的請求加一個參數

class SanzhaSpider(Spider):
name = "douban"
allowed_domains = ["http://www.douban.com"]
def start_requests(self):
yield Request(response.url,cookies={『viewed『:『"1083428"『, 『__utmv『:『30149280.3975『}, callback=self.parse_with_cookie)

你可以搜 scrapy set cookie 有詳細的部分。(可能有版本更新問題)


2:phantomjs: 內部函數addCookie調用即可,

phantom.addCookie({
"name": "some name here", /* required property */
"value": "some hash here",
"domain": "ea.some domain here.com", /* required property */
"path": "/",
"httponly": false,
"secure": false,
"expires": (new Date()).getTime() + (10000 * 60 * 60) /* &<-- expires in 10 hour */ });

查官網是最好的addCookie | PhantomJS

3:使用urllib2

import urllib2
opener = urllib2.build_opener()
opener.addheaders.append(("Cookie", "cookiename=cookievalue"))
f = opener.open("http://example.com/")

這個,不用說了吧。


4:如何用程序自動獲取cookie呢?
python 有個叫Cookie的包。
Python Cookie HTTP獲取cookie並處理
還有用requests自帶監控cookie
python爬蟲學習(六)requests 關於cookie的堪誤

################隨手一個分界線####################
知乎第二邀,希望能說的清楚一些,如果我表達有誤空可在評論區指出。
當然可以點個贊或者關注。。


今天剛試了一下,發現通過chrome的network獲得登錄某個網站的cookie,然後手動添加到scrapy的spider中,是可以正確抓取信息的。
具體方法請參見:Scrapy用Cookie實現模擬登錄
不過,並不需要像文中那樣添加很長的cookie,只取其中重要的一兩條就足夠了。


推薦閱讀:

爬蟲怎麼保存圖片?
我爬網站的時候爬久了網站就會響應連接超時導致之後無法正常爬取,而此時網路很好但是有好多頁面都無法打開?
有什麼好的python3爬蟲入門教程或書籍嗎?
python是否可對進行了blob加密的視頻進行爬取操作呢?
爬蟲爬去簡書網站上面文章,get不到,求教原因?

TAG:網頁爬蟲 |