天天看點

使用Scrapy爬取知乎網站使用cookie模拟登陸通過賬号登陸其他一些技巧

從這篇文章你可以學習到如何擷取一個網站的 cookie 資訊。下面所講述的方法就是使用 cookie 來模拟登陸知乎網站并爬取使用者資訊。

一個模拟登陸知乎網站的示例代碼如下:

formrequest 請求中有一個回調函數 parse_item 用于解析頁面内容。

header 和 cookies 在 settings.py 中定義如下:

這兩個參數你都可以通過浏覽器的一些開發工具檢視到,特别是 cookies 中的資訊。

使用賬戶和密碼進行登陸代碼如下:

該代碼邏輯如下:

重寫 <code>start_requests</code> 方法,通過設定 formrequest 的 formdata 參數,這裡是 email 和 password,然後送出請求到 <code>http://www.zhihu.com/login</code>進行登陸,如果登陸成功之後,調用 <code>after_login</code> 回調方法。

在 <code>after_login</code> 方法中,一個個通路 <code>start_urls</code> 中的 url

rules 中定義了一些正則比對的 url 所對應的回調函數

在 <code>parse_user</code> 方法裡,你可以通過 xpath 擷取到使用者的相關資訊,也可以去擷取關注和粉絲清單的資料。

例如,先擷取到使用者的關注數 <code>followee_num</code>,就可以通過下面一段代碼去擷取該使用者所有的關注清單。代碼如下

然後,你需要增加一個處理關注清單的回調方法 <code>parse_follow_url</code>,這部分代碼如下:

擷取粉絲清單的代碼和上面代碼類似。

由于隐私設定的緣故,有些使用者可能沒有顯示一些資料,故針對某些使用者 xpath 表達式可能會抛出一些異常,如下面代碼擷取使用者的名稱:

你可以将上面代碼修改如下,以避免出現一個異常: