搜索

python爬取和分析新浪微博(一):scrapy构建新浪微博榜单、博主及微博信...

发布网友

我来回答

1个回答

热心网友

爬虫项目介绍

本项目基于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(38个用户,有些领域榜单上可能不足100个用户):

weiboinfo(115740条微博)

小结

以上介绍了基于V影响力榜单爬取新浪微博信息的爬虫项目,代码在GitHub上公开,欢迎查看、交流。

后续文章将对收集到的数据进行统计分析和可视化展示,期待进一步的探索。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com

热门图文

Top