文章目的是爲了學習分享,嚴禁將代碼和所得數據商用,如追究責任概不負責。git
微博爬蟲終於又又又更新了。github
此次主要有三件事,且聽我一一道來web
微博評論爬蟲更新
突破了 100 頁、130 頁的限制(20200224 親自嘗試過 1 w+ count),可抓取指定微博的全部評論瀏覽器
代碼文件是 WeiboSuperCommentScrapy.py ,其在微博爬蟲項目 Github 倉庫的位置以下:微信
代碼須要改動的地方主要有三處,你的微博帳號,密碼和你想要爬取微博的 id
:cookie
爬取的微博評論會以 csv
文件的格式保存在項目 comment
文件夾下,文件名爲 {id}.csv
,如已運行過一次,可將學習
WeiboLogin(username, password, cookie_path).login()spa
這一行代碼註釋掉,這一行代碼就是爲了自動獲取 cookie 的,如發現 cookie 過時可取消註釋。.net
自動獲取 cookie 的代碼來源於一位簡書做者 https://www.jianshu.com/p/8dc04794e35f線程
而後問題就在於怎麼找到你想要爬取微博的 id
,爬取的是手機 m 站(https://m.weibo.cn),舉個例子,好比咱們想爬取熱門中的這條微博的全部評論
點開圖中紅線圈中的那個評論圖案,這個時候在瀏覽器地址欄上就能看到微博id
了
如你所見,微博 id
就是那一串數字,複製到程序中進行替換便可,若是想要一次性爬不少個微博的評論呢,能夠把變量 id 改爲 list 類型,也能夠從配置文件讀取,而後開個線程池便可,這些小的改動因爲每一個人須要不同,你們本身動手改改就行。
from concurrent.futures import ThreadPoolExecutor
for id in ids:
ThreadPoolExecutor.submit(start_crawl,(get_cookies(),id))
運行代碼後,若是
WeiboLogin(username, password, cookie_path).login()
未取消註釋,將會彈出驗證碼,手動在控制檯輸入便可,該爬蟲能夠爬取一條微博下全部的評論及評論的回覆,如發現評論爬取完畢,可手動關掉程序,否則會一直嘗試,這個小 bug 在我寫文章時才發現,代碼已 commmit 到 github 了,不過不是什麼大問題,下次補上。
微博話題爬蟲更新
上一版的微博話題爬蟲就能支持按時間段爬取了,不過必須是以今天爲結束點,這一版的能夠支持任意時間段了:
WeiboTopicScrapy(keyword='巴黎聖母院大火',filter=0,start_time='20190414',end_time='20190515')
keyword
即爬取的話題,filter = 0
爬取全部微博,filter = 1
只爬取原創微博,start_time
和 end_time
便是微博發佈時所處的時間段。不能支持 時、分、秒等顆粒度搜索。
注意話題爬蟲和評論爬蟲相互獨立,話題爬蟲仍然須要設置 cookie,不知道怎麼設置 cookie?請參見我之前的文章:微博全站爬蟲修復更新啦!!!
用戶微博爬蟲仍然可用
很多同窗反饋爬取指定用戶的微博爬蟲失效了,並且都是 decode/encode 啥的錯誤,我本身又試了好幾回,發現仍然可用,99% 的緣由是 cookie 設置錯誤了。
至於 用戶微博爬蟲 的 exe 版本,我沒試了,我在上一次更新就說過,再也不維護 exe 版本,請你們運行代碼,Python 零基礎的同窗如發現 module not found,自行安裝第三方庫便可。
點擊閱讀原文直達項目 Github 地址。
本文分享自微信公衆號 - 月小水長(inspurer)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。