爬取《镇魂》微博数据
本文皆在于通过爬虫方式爬取微博镇魂。
- 编程语言:python2.7
- 依赖库:requests
- 系统环境:windows
*本篇文章主要参考自Denise_hzf的博客https://www.cnblogs.com/Denise-hzf/p/7927852.html,感谢。
要爬去的数据来源
最近名为《镇魂》的剧十分火热,于是为了分析其热门的原因,有了这篇文章,主要爬取微博评论的数据。
比较推荐又简单的方法是通过手机网页的get请求来访问,原因就是简单粗暴(不过存在的问题是貌似最多只能访问101页)。
微博提供的接口为
https://m.weibo.cn/api/comments/show?id=微博文章的id&page=要获取评论的页数
从get请求获得的json数据中提取评论信息
由于在原文章https://www.cnblogs.com/Denise-hzf/p/7927852.html中执行
jsondata.get('data')
不能获取到数据(可能是因为微博json的格式不一样了)。通过分析以后发现改为
jsondata.get('data').get('data')
即可获取评论数据
使用正则表达式去除多余的回复信息和@信息
由于微博的评论,不仅仅有评论,还有回复,所以爬取以后难免有很多“回复@XXXX:DDDD”类似的信息和@信息,可以用正则表达式去掉
import re
dr = re.compile(r'<[^>]+>',re.S)
drr = re.compile(r'@.*:(.*?)',re.S)
drrr = re.compile(r'@.+?\s',re.S)
comment = dr.sub('',comment)#删除多余的信息
comment = drr.sub('',comment)#删除多余的信息
comment = drrr.sub('',comment)#删除多余的信息
完整代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#参考自Denise_hzf的博客https://www.cnblogs.com/Denise-hzf/p/7927852.html
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import requests
import re
import time
import random
def readfromtxt(filename):
file = open(filename, "r")
text = file.read()
file.close()
return text
def writeintxt(dict,filename):
output = open(filename, 'a+')
for d, list in dict.items():
comment_str = ""
for l in list:
comment_s