python爬蟲之微博評論爬取
最近喜歡看《火星情報局》,搞笑中也不缺內涵。記得2016年的最後一期,裡面說到,年終總結只需一個字,而沈夢辰給自己的是一個黑字,2016的她如此招黑,那今天我爬取她2017年的一篇微博評論,看看2017有什麼變化呢?
提交Cookie信息模擬微博登錄
需要爬取登錄之後的信息,大家都是望而止步,不要擔心,今天呢,給大家提供一個超級簡單的方法,就是提交Cookie信息登錄微博,首先,我們找到沈夢辰的微博網址:http://m.weibo.cn/u/1732927460 這裡是登錄的移動端,你會發現,你點擊網址會自動跳轉到登錄微博的界面(沒有跳轉的註銷掉自己的賬號),如下圖所示:
然後登錄自己的賬號密碼,這時記得打開Fiddler進行抓包,如圖所示,提取Cookie做為請求沈夢辰微博網址的請求頭即可。
非同步載入數據如何爬取
我在網上看過移動端的微博數據很好爬,沒有非同步載入,可是不知道為什麼,我的評論數據就是非同步載入的,其實非同步載入不可怕,找到相應js包即可,如下圖為沈夢辰的一條微博和評論的js包。我們只需請求這個js數據,然後利用json庫即可提取我們所需的評論數據。
代碼
import requestsnimport jsonnimport timenimport pymongonnclient = pymongo.MongoClient(localhost, 27017)nweibo = client[weibo]ncomment_shengmengc = weibo[comment_shengmengc]nnheaders = {n "Cookies":xxxxxxxxxxx,n "User-Agent":Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1n}nnurl_comment = [http://m.weibo.cn/api/comments/show?id=4060977869675098&page={}.format(str(i)) for i in range(0,1000)]ndef get_comment(url):n wb_data = requests.get(url,headers=headers).textn data_comment = json.loads(wb_data)n try:n datas = data_comment[data]n for data in datas:n comment = {"comment":data.get("text")}n comment_shengmengc.insert_one(comment)n except KeyError:n passnfor url in url_comment:n get_comment(url)n time.sleep(2)n
爬取的數據導入資料庫後又導出為csv格式進行分析
詞雲製作及分析
可以說支持的評論更多一些:例如愛你,喜歡,堅強等等;不過也有不少的惡意評論:黑,噁心,討厭等。 希望你在新的一年好好努力,讓噴子遠離你吧。
總結
1Cookie提交是一個簡單不錯的選擇,但Cookie信息隱藏著隱私,大家千萬別暴露在外面,以防外人所利用。
2非同步載入不可怕,找包有技巧,有id,vid等欄位的嫌疑最大,多練習就行。
作者:羅羅攀 Python愛好者社區專欄作者,請勿轉載,謝謝。
簡書主頁:羅羅攀 - 簡書博客專欄:羅羅攀的博客配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。
推薦閱讀:
※草根學Python(九) 面向對象
※對Github上Python開源項目進行分析時遇到的一個AttributeError的解釋及其解決方法。
※基於pytesseract的簡單驗證碼識別