querylist采集微信公众号文章(微信公众号文章的舆情监控系统)
优采云 发布时间: 2021-12-23 16:23querylist采集微信公众号文章(微信公众号文章的舆情监控系统)
小明酱是2018年元旦更新的,文笔还是很粗糙的。如果您遇到爬虫问题,欢迎交流,评论区随时为您开放!
实习已经过去两周了,目前的任务量不是很大。我的老板人很好,他是一名军校学生,分配给我的任务比我想象的更接近我的研究方向。他做的是微信公众号文章的舆情监测系统。以下是系统图的整体设计流程:
目前第一周是爬取微信公众号文章,主要功能如下:
以上功能已经实现。真心觉得在项目中学习是最高效的方式,但同时也有不明白的问题。希望下周能掌握新知识,做一个总结。您不能只停留在插件编程中。.
下面我介绍一下思路流程GitHub代码点击这里:
大意
输入公众号获取爬虫起始地址
http://weixin.sogou.com/weixin?type=1&s_from=input&query=+公众号ID+&ie=utf8&_sug_=n&_sug_type_=
基于网页结构设计爬取规则
在这个阶段,我徘徊了很长时间。看到很多demo设计花哨的反拣货策略,让我心慌了半天。
1.第一级:找到指定公众号,获取公众号首页链接
2.Level 2:跳转到首页,找到文章的各个链接
3. Level 3:进入每个文章页面进行信息爬取,三个绿色框内的信息,以及页面的主要内容
主要思路是这样的,用chrome检查的部分就不细说了,是例行操作
网址:
但是当我把网址复制到浏览器时,他又回到了微信搜索的首页,哦,我该怎么办?我们先来看看开发者工具
以上参数只对应URL。专注于 tsn。表示访问在文章的一天内。我们应该提出以下要求:
return [scrapy.FormRequest(url='http://weixin.sogou.com/weixin',
formdata={'type':'2',
'ie':'utf8',
'query':key,
'tsn':'1',
'ft':'',
'et':'',
'interation':'',
'sst0': str(int(time.time()*1000)),
'page': str(self.page),
'wxid':'',
'usip':''},
method='get']
上面的问题解决了~
存储详情
数据存储量还是很大的,需要大量的样本来训练模型。它现在存储在数据库中,但值得我注意的一个细节是数据的编码。现在公众号的文章里有很多表情符号。,于是出现如下错误:
pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\xBD \\xC2...' for column 'article' at row 1")
解决方案参考:
对抗爬行动物
主要问题是验证码,但是如果爬行速度不是很快,是可以避免的。因此,采用以下两种策略:
import random
DOWNLOAD_DELAY = random.randint(1, 3)
总结页面元素匹配问题。以后我们会详细了解BeautifulSoup的翻页逻辑。这个只能自学自学了。考虑换页的逻辑数据库存储和编码问题。Navicat是新换的,感觉100分。这次配置完成后,放心使用代理IP,网上通过代码爬取的IP无法使用,浪费了很多时间,邪恶的tsn,学了一招笑死了。
爬行的基本思路很清晰,但其实我还没有完全掌握爬行,还有很多方面需要继续学习。正如行走所说的那样,我心急如焚,想尽快实现自己的目标,却忽略了正确的原则和基础,是绝对不可能掌握的。因此,在寒假期间,我希望能好好学习以下知识:
尤其是第二点非常非常重要。学习会可以证明你可以爬,而不是仅仅拼凑几段代码来运行,你会得到很多东西。同时也希望志同道合的朋友可以加我。微信,一起进步!哈哈我的微信欢迎私聊~