最近喜欢看《火星情报局》,搞笑中也不缺内涵。记得2016年的最后一期,里面说到,年终总结只需一个字,而沈梦辰给自己的是一个黑字,2016的她如此招黑,那今天我爬取她2017年的一篇微博评论,看看2017有什么变化呢?
提交Cookie信息模拟微博登录
需要爬取登录之后的信息,大家都是望而止步,不要担心,今天呢,给大家提供一个超级简单的方法,就是提交Cookie信息登录微博,首先,我们找到沈梦辰的微博网址:http://m.weibo.cn/u/1732927460 这里是登录的移动端,你会发现,你点击网址会自动跳转到登录微博的界面(没有跳转的注销掉自己的账号),如下图所示:
然后登录自己的账号密码,这时记得打开Fiddler进行抓包,如图所示,提取Cookie做为请求沈梦辰微博网址的请求头即可。
异步加载数据如何爬取
我在网上看过移动端的微博数据很好爬,没有异步加载,可是不知道为什么,我的评论数据就是异步加载的,其实异步加载不可怕,找到相应js包即可,如下图为沈梦辰的一条微博和评论的js包。我们只需请求这个js数据,然后利用json库即可提取我们所需的评论数据。
代码
import requests
import json
import time
import pymongo
client = pymongo.MongoClient('localhost', 27017)
weibo = client['weibo']
comment_shengmengc = weibo['comment_shengmengc']
headers = {
"Cookies":'xxxxxxxxxxx',
"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.1'
}
url_comment = ['http://m.weibo.cn/api/comments/show?id=4060977869675098&page={}'.format(str(i)) for i in range(0,1000)]
def get_comment(url):
wb_data = requests.get(url,headers=headers).text
data_comment = json.loads(wb_data)
try:
datas = data_comment['data']
for data in datas:
comment = {"comment":data.get("text")}
comment_shengmengc.insert_one(comment)
except KeyError:
pass
for url in url_comment:
get_comment(url)
time.sleep(2)
爬取的数据导入数据库后又导出为csv格式进行分析
词云制作及分析
可以说支持的评论更多一些:例如爱你,喜欢,坚强等等;不过也有不少的恶意评论:黑,恶心,讨厌等。 希望你在新的一年好好努力,让喷子远离你吧。
总结
1Cookie提交是一个简单不错的选择,但Cookie信息隐藏着隐私,大家千万别暴露在外面,以防外人所利用。
2异步加载不可怕,找包有技巧,有id,vid等字段的嫌疑最大,多练习就行。
网友评论