給新手的Python微博爬蟲

爲何說是給新手的呢?

由於項目很小,算上空行才200來行代碼,甚至有些「簡陋」。相比於動不動寫成幾個大模塊的教程,新手們能更快理解我在幹什麼,節省學習時間。固然,該有的模擬登錄,數據解析也都很多。javascript

Tip: 結合項目代碼看比較好java

一些說明

  1. 爬的是手機端網頁版的微博(據說這個爬起來簡單,我就爬了)。
  2. 模擬登錄採用POST表單實現,不是複製粘貼 cookie(複製粘貼沒什麼技術含量,都不用動腦子,想用的能夠本身試一試)。
  3. 最後的數據採用pickle序列化後存儲在本地(想用數據庫的本身改一下就行了,不會的能夠去看看廖雪峯老師的教程)。
  4. 微博內容只取文本內容。(由於我懶)
  5. 爲了避免給別人添麻煩,亦本學習交流之意,對爬取的速度作了限制。

代碼結構

  1. 大致上分爲兩部分,一個 WBCrawler 類,一個 show_random_data . 前者爬取並保存,後者隨機檢查一下。
  2. 關於登陸時所提交的表單涉及到的字段,我都在代碼裏面寫了。看了它的javascript文件,有的字段在用賬號密碼登陸時就是空值。
  3. HTTP 請求用 requests.seesion 發送,而且在項目退出時會保存 session,以便再次使用。這裏固然也是用的pickle序列化保存。
  4. 爲了節約,長微博和短微博會在不一樣的地方進行解析,因此你們會看到有的地方寫了兩種解析方式。
  5. 其中有一個函數使用了 yield 語句,是爲了下降耦合。關於 yield ,能夠看廖雪峯老師的講解。關於什麼是耦合,我也不太清楚,我這裏是爲了避免讓函數之間調用得太緊湊,適當地獨立出來。
  6. 類的初始化函數中的 maximum 參數指爬取幾頁,默認爬兩頁。
相關文章
相關標籤/搜索