工作原因需要爬取微博上相关微博内容以及评论。直接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进行判断,如果是重复的微博则对其进行丢弃操作:
领取专属 10元无门槛券
私享最新 技术干货