通过搜狗搜索引擎爬取微信文章
发布网友
发布时间:2024-09-24 13:31
我来回答
共1个回答
热心网友
时间:2024-09-24 21:06
任务1:爬取微信文章,主要功能如下:
(1)爬取文章的标题、内容、发布时间、微信昵称、微信号
(2)以正确编码格式存储到数据库
(3)实现将新增数据添加到数据库
思路:
通过微信合作方搜狗搜索引擎发送相应请求来间接抓取,可以实现两种检索方式,如下图:搜文章和公众号
输入关键词,获取目标页
所用环境:Python3.6|Mysql8.0
分析网页信息
1.在不登陆的情况下,只能访问10页内容
2.登陆情况下,可以访问100页内容
选择抓取100页目标文章
根据网页结构设计爬取规则
1.获取每页上文章的链接
2.跳转到文章页进行信息爬取,红框中的信息,微信号、具体日期
细节设计
(1)模拟登陆,获取第一页中的response
文章链接在Doc中
请求链接: weixin.sogou.com/weixin?
参数:
query:关键词
page:页码
sst0的值为当日日期的timestamp*1000的前13位
timestamp=int(round(time.time()*1000))
其余key的值是固定的
(2)获取第一页中文章的url
data-share是目标文章链接,点击data-share,自动跳转到目标文章
(3)爬取文章的标题、内容、日期、昵称、微信号
微信号:
日期:
(4)存储在Mysql
连接数据库:pymysql
判断表是否存在,如果存在直接插入数据,否则先创建数据
至此完成了一页数据的爬取功能,尝试批量爬取100页数据,在多次爬取后,发现网页会封锁ip,返回response.status_code为302
解决方式:构建Ip代理池,当出现302时更换Ip,然后重新尝试爬取,直到状态码返回为200。方式:网上购买可用的Ip
完整思路就是这个。
爬取结果:
异常情况:
1.Mysql存储时会抛出异常
解决方式:
发现是编码问题,本地数据库的默认编码是utf8,默认保存的是1到3个字节,但是现在的emoji表情采用4个字节保存,所以抛出异常。
blog.csdn.net/ls_ange/a...
2.没有指定项内容
查找网页,发现网页中存在类似网页,和正常的网页格式不一样:
解决方式:过滤掉此类数据
3.fork此项目需要注意的点:
备用Ip代理的获取,需要根据实际情况填写ip代理池的情况
4.根据打开网页信息,改变key对应的value值
github代码: wangqiqi1993/crawl-wechat