爲何說是給新手的呢?
由於項目很小,算上空行才200來行代碼,甚至有些「簡陋」。相比於動不動寫成幾個大模塊的教程,新手們能更快理解我在幹什麼,節省學習時間。固然,該有的模擬登錄,數據解析也都很多。javascript
Tip: 結合項目代碼看比較好java
一些說明
- 爬的是手機端網頁版的微博(據說這個爬起來簡單,我就爬了)。
- 模擬登錄採用POST表單實現,不是複製粘貼 cookie(複製粘貼沒什麼技術含量,都不用動腦子,想用的能夠本身試一試)。
- 最後的數據採用pickle序列化後存儲在本地(想用數據庫的本身改一下就行了,不會的能夠去看看廖雪峯老師的教程)。
- 微博內容只取文本內容。(由於我懶)
- 爲了避免給別人添麻煩,亦本學習交流之意,對爬取的速度作了限制。
代碼結構
- 大致上分爲兩部分,一個
WBCrawler
類,一個 show_random_data
. 前者爬取並保存,後者隨機檢查一下。
- 關於登陸時所提交的表單涉及到的字段,我都在代碼裏面寫了。看了它的javascript文件,有的字段在用賬號密碼登陸時就是空值。
- HTTP 請求用 requests.seesion 發送,而且在項目退出時會保存 session,以便再次使用。這裏固然也是用的pickle序列化保存。
- 爲了節約,長微博和短微博會在不一樣的地方進行解析,因此你們會看到有的地方寫了兩種解析方式。
- 其中有一個函數使用了
yield
語句,是爲了下降耦合。關於 yield
,能夠看廖雪峯老師的講解。關於什麼是耦合,我也不太清楚,我這裏是爲了避免讓函數之間調用得太緊湊,適當地獨立出來。
- 類的初始化函數中的
maximum
參數指爬取幾頁,默認爬兩頁。