Python 爬虫-新浪微博

新浪微博爬取

前言

  现在这个数据时代,要做点数据研究,少不了爬虫。毕竟自己没有可以研究的数据呀。本篇文章已爬取新浪微博为实例驱动,讲解爬虫。主要有微博文章爬取,评论爬取,用户信息爬取(用户名称,所在地,以及性别)。这个项目其实主要是用户爬取文本做情感分析的,为此付出了不少时间,来研究和优化这个项目。三者的爬取是三个独立的模块。数据存储采用Mysql数据库,orm框架使用sqlarlchemy框架。

基本环境

  • requests库:一个http请求库
  • selenium库:一个自动化测试工具
  • re库:正则

前提条件

  由于微博反爬虫比较的厉害,我们就需要绕过反爬虫的机制,这个机制一般都是登录(获取比较多的信息,新浪首先就会要求你登录)、降低qps(每秒的请求次数)、修改用户代理,修改ip代理、多帐号,通过这些手段来有效防止被反爬虫,加大爬取效率。

开始前的概述

  微博有三个站点,分别是:
老式移动端:https://weibo.cn/
在这里插入图片描述
pc端:https://weibo.com/
在这里插入图片描述
移动端:https://m.weibo.cn/
在这里插入图片描述
这三个站点各有优缺点。老式移动端的数据比较的容易获取,qps较高,主要是和ip相关,选用此站点记得使用代理,缺点就是数据获得不容易解析,数据都是在后台就渲染到html中,有些东西是直接获取不到的,例如,评论及其回复,就不是那么好解析。pc端 的数据也容易获取,qps未注意,数据是渲染在页面中的,但是我惊奇地发现,可以用js返回请求的json数据,也是比较的好解析。数据基本上都是包装在js中的,需要js解析工具,才能够拿到整齐的数据。移动端的数据就好说了,返回数据json格式,这个东西就像是自己的后台一样,哈哈。不过qps比较低,建议使用ip代理,用户代理池。

登录

  无论是哪个站点,都需要登录,这是个绕不开的话题。登录同样有三个站点,但是都是可以互相共用的,应该是三套sso系统,注意: 都是微博的登录,新浪站点的登录未测试。我就选择比较容易操作的平台了:https://passport.weibo.cn/signin/login
在这里插入图片描述
这个站点登录相对来说比较容易一点,一般没有验证之类的,当然这是处在用户正常的情况下,比如,在经常登录的地点使用,没有特别的安全设置,在这个设备上有多次登录。

微博博文爬取

  首先爬取了微博才能够爬取评论和用户所在地。我的目标是获得有关键字的微博,所以我就需要搜索,微博的搜索入口有点多,后面或罗列出来。我就选择了容易爬取的站点,移动端主页的搜索。
在这里插入图片描述
这么简洁的搜索,其缺点也是很容看出的。没有其他的限制,大概100页的数据,每页大概10条微博,有时候会多一点,但是都是掺杂了其他的东西,例如广告,近期的热点微博等等。一般说来,返回数据条目中的card_type = 9 才是我们想要的。通过这个接口爬取大量数据,需要不断爬取,因为这个接口返回的数据都是近期的内容
在这里插入图片描述

url:https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D1%26q%3D%E7%96%AB%E6%83%85&page_type=searchall&page=2
// 看不懂是不是?没关系,这个是参数经过url编码之后的url,看了下面这个图片,你就知道。

在这里插入图片描述
其中的参数就不言而喻了。conainerid是经过url编码的。解析就更加简单了,json格式,直接取就ok。
但是要注意一点,有的微博很长,他是经过长文本存储的,经过了处理。
返回结果简要说明:
在这里插入图片描述

评论爬取

  我的策略是从数据库中获得微博id,然后构造请求url。

用户爬取

  策略是从数据库中获得用户id,然后构造请求url。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值