Scrapy对新浪微博某关键词的爬取以及不同url中重复内容的过滤

工作原因需要爬取微博上相关微博内容以及评论。直接scrapy上手,发现有部分重复的内容出现。

之后我们滚动往下拉发现url是有规律的:https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D1%26q%3D%E8%8C%83%E5%86%B0%E5%86%B0&page_type=searchall&page=2https://m.weibo.cn/api/container/getIndex?

复制这段json,然后通过下面两个网站格式化一下,便于我们观察规律:Unicode转中文:http://www.atool.org/chinese2unicode.phpJson在线格式化:http://tool.oschina.net/codeformat/json在线工具有特别丰富的功能让我们更好的查看json:

我们发现JSON中保存着我们要的页面信息:

其他的信息一次类推在JSON或者URL中观察:微博爬取parse函数:

2.scrapy爬取微博评论

评论在微博正文中往下拉鼠标可以获得URL规律,下面是微博评论解析函数:

最后异步存入MYSQL:item:

Pipline:异步插入:

按照规则来写爬虫还是难免有重复:

所以需要在插入内容前对数据进行去重处理3.scrapy+Redis实现对重复微博的过滤这里使用Redis中的Set集合来实现,也可以用Python中的Set来做,数据量不大的情况下,Redis中Set有Sadd方法,当成功插入数据后,会返回1。如果插入重复数据则会返回0。

在Scrapy中新增一个pipline,然后对每一个要保存的item进行判断,如果是重复的微博则对其进行丢弃操作:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181010A07F7500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券