python爬取微博评论
1. python爬取和分析新浪微博(一):scrapy构建新浪微博榜单、博主及微博信息爬虫
爬虫项目介绍
本项目基于Python的Scrapy框架,采用随机用户代理和IP代理等反爬技巧,将收集到的微博领域数据、各领域榜单博主信息和博主的微博信息分别存入MySQL数据库的相应表格。
查看完整代码请访问GitHub:
爬虫逻辑
2.1 获取微博领域信息
首先,爬取V影响力榜上所有微博领域名称及其对应的各领域微博榜单链接。
2.2 获取各领域榜单博主信息
进入各领域排行榜页面(如互联网榜),抓取4月月榜排名前100的博主信息。
分析网页得知,博主信息通过单独请求json文件获取。
请求的URL地址为:v6.bang.weibo.com/aj/we...
URL中__rnd字段的值由请求时间戳生成。
使用POST请求,并在表单中包含type、date、domainId等字段。
编写请求代码如下:
2.3 获得博主个人主页和发表微博信息
收集每个博主的昵称、ID、粉丝数、关注数、微博数、性别、地址等信息后,进入博主的微博主页,抓取最近60条微博信息(包括内容、发表日期、转发/点赞/评论数等)。
请求博主主页URL时需携带固定的cookie信息。
博主微博主页分析发现,发表的微博内容通过单独请求json文件获取。
json文件的URL很长,包含domain、pl_name、page_id、script_uri等字段。
请求方式为GET。
请求json文件后,将data值转化为Scrapy的Selector子类,使用CSS或XPath选择器获取所需信息。
爬虫代理设置
为了对抗微博的反爬策略,本项目使用随机更换User-Agent和IP地址的方法。
3.1 随机User-Agent
编写RandomUserAgentMiddleware中间件,使用fake-useragent生成UserAgent实例,为每次请求随机生成一个User-Agent。
具体代码在GitHub上。
3.2 随机IP
从蘑菇IP代理购买付费IP,生成API链接,处理返回的JSON文件提取IP信息,保存至MySQL数据库。Scrapy每次请求时从数据库随机获取一个有效IP。
通过变换IP地址发送请求,基本避免了被反爬。
爬取结果
异步保存至MySQL数据库,数据分别存入weibotopic、topicuser、weiboinfo三个表格。
weibotopic(38个领域):
topicuser(3648个用户,有些领域榜单上可能不足100个用户):
weiboinfo(115740条微博)
小结
以上介绍了基于V影响力榜单爬取新浪微博信息的爬虫项目,代码在GitHub上公开,欢迎查看、交流。
后续文章将对收集到的数据进行统计分析和可视化展示,期待进一步的探索。
2. 9.12最快爬取新浪微博爬虫Python代码(主体内容+评论)
本文提供了一个完整的Python代码,用于爬取新浪微博数据,包括主题内容和评论。
首先,我们以#华为发布会#这一话题为例,通过开发者模式,发现所需信息主要存储在以#开头的请求中,这些请求通常包含HTML格式内容,因此我们使用BeautifulSoup库进行解析。
通过解析,我们能获取到mid和uid参数,用于后续获取评论内容。接着,我们发现了一个带有q和nop参数的请求,以及随着页码增加而变化的page参数。解析这些请求,我们能够成功获取到微博主题内容。
为了获取评论内容,我们点击更多评论链接,发现了一个包含评论内容的div标签。我们解析出请求buildComments?is_reload=1&id=,发现其返回的为JSON格式数据,直接用于解析,简化了步骤。
随着滚动页面获取更多评论,我们观察到每次加载都会伴随着两个请求,其中buildComments?flow=0&is_reload=1&id=...请求参数会逐渐增加,包括流标识、ID、评论数、用户ID、上一条请求中最后一个评论的mid以及验证是否人为操作的rum参数。通过分析,我们定义了一个函数来解析这些请求,实现自动获取评论内容。
本文提供的代码示例展示了从主题内容到评论内容的完整爬取流程,包含解析HTML、JSON数据以及处理请求参数的技巧。对于完整代码,建议访问CSDN博客获取。