利用Scrapy分析某瓣小组帖子信息
背景
最近要换房子,于是在逛某瓣租房,由于租房信息错综复杂(中介较多),于是想能不能利用爬虫将数据抓取下来再通过某种方式进行数据清洗/过滤,达到可以自定义筛选和排除中介的目的。
成果
爬虫部分
本文侧重讲爬虫部分,即原始数据的采集
数据来源于某瓣小组租房
爬取思路
找到一个小组讨论贴的第一页
循环爬取下一页
直到爬取到指定时间结束为止(通过判断每一页的最后一条的时间)
爬取实现
思路有了,实现方法大同小异,取决于自己熟悉什么。
我采取的是Scrapy,自己手写request也可以的
由于github已经有源码了,我就省略一些
主要讲讲遇到的一些问题和思路
主体爬取
如思路所言,设定起始页为小组讨论帖的第一页
提取每一行的数据,并判断结束时间,递归下一页继续爬取
注意从这个页面上能获取到的数据不包括帖子的详情,所以在提取每一行数据的时候
如果需要详情,还需要再额外请求这个帖子的地址,再从新页面拿到帖子的内容
拿到数据以后可以存储到数据库
这里我是通过Scrapy的PipLine实现的,其他的可以写sql插入,类似
反爬
正常爬虫绕不开的就是反爬
这里有几个方面可以处理
- cookie,使用随机11位bid,这里是根据网上资料的结论处理的
- 随机UA头
- 异常重试等机制,针对403和302进行处理
Socks5代理
这一点是比较重要的
如果不加代理爬取,很快就会触发403和302
而且加的必须是Socks5代理,http代理不行(暂不知为啥,可能是防火墙有关系把)
我采用的代理是携趣代理,不充钱每天也有免费1000个ip,充钱也足够便宜
总结
爬虫首先要应对的就是反爬,但要注意有风险,还是要降低一些频率
多搜索,网上基本上都有现成的思路或者代码
除了爬虫部分还写了flutter和后端
flutter就是一个demo
后端做的比较简单,就是一些筛选和过滤
过滤规则比较随意(比如超过10个图片判定为中介)