链接网房源信息redis分布式爬虫及数据可视化-武汉市

4 篇文章 0 订阅
4 篇文章 0 订阅

项目描述: 

使用lxml+MongoDB+echart进行链家网房产信息数据的爬取、存储及可视化,分布式爬虫采用redis主-从结构,主机负责爬取一级URL并生成二级URL,从机负责二级URL数据爬取、存储及相关信息反馈给主机,主从通信采用redis的set实现。

       反爬策略:从免费IP代理池中选择代理IP,不断换取User-Agent,并且控制随机访站时间。主机采用双线程,分别生成二手房、租房信息的url hash集合并存于redis,从机去redis集合拿url并爬取,爬取失败的url则重新加入集合。

       负责技术框架方案的选择,相关功能代码的编写及测试,根据需求逆向学习。

       源码暂不公布,需要的在评论下留言。


反爬策略总结:

在爬虫与反爬虫的对弈中,爬虫一定会胜利。

robots.txt只是约定,爬虫遵守或者不遵守完全在于爬虫作者的意愿。一般来讲,只有大的搜索引擎爬虫会遵守你网站的robots.txt协议,其他的爬虫根本都不会看你一眼。

1.模拟User-Agent

2.一个比较常见的反爬虫策略是基于访问数量,爬虫的访问总数会远高于人类,设定一个阈值,超过阈值的就是爬虫。

然而,只要有规律的sleep,就可以轻松绕过这条限制

3.对于一个较短周期设置比较宽的阈值(短时间策略),而随着时间长度的增加而逐步收紧阈值(长时间策略)

4.代理IP和批量注册的账号(云服务器或者VPS)根据来访 IP 的风险属性进一步识别


1、对于处理验证码,爬虫爬久了通常网站的处理策略就是让你输入验证码验证是否机器人,此时有三种解决方法: 

 第一种把验证码down到本地之后,手动输入验证码验证,此种成本相对较高,而且不能完全做到自动抓取,需要人为干预。

第二种图像识别验证码,自动填写验证,但是现在的情况是大部分验证码噪声较多复杂度大,对于像我这样对图像识别不是很熟悉的人很难识别出正确的验证码。

第三种也是最实用的一种,接入自动打码平台,个人感觉比上两种方法好些。 

2、多账号反爬,有很多的网站会通过同一个用户单位时间内操作频次来判断是否机器人,比如像新浪微博等网站。这种情况下我们就需要先测试单用户抓取阈值,然后在阈值前切换账号其他用户,如此循环即可。当然,新浪微博反爬手段不止是账号,还包括单ip操作频次等。  3、分布式爬虫,分布式能在一定程度上起到反爬虫的作用,当然相对于反爬虫分布式最大的作用还是能做到高效大量的抓取。

4、保存cookies,记录用户的状态,在模拟登陆十分麻烦的情况下,我们不妨直接在web上登陆之后取下cookie并保存然后带上cookie做爬虫,但这不是长久的方法,而且cookie隔一段时间可能失效。有的网站会根据cookie中的一些值去判断是否机器人,这个需要自己不断测试,比如豆瓣。

 5、注意配合移动端、web端以及桌面版,其中web端包括m站即手机站和pc站,往往是pc站的模拟抓取难度大于手机站,所以在m站和pc站的资源相同的情况下优先考虑抓取m站。同时如果无法在web端抓取,不可忽略在app以及桌面版的也可以抓取到目标数据资源。  应对反爬虫的策略,首先要发现网站的反爬虫手段是什么?这个发现的过程就是不断测试的过程,有点类似于A/B测试,弄清楚它的反爬虫机制,就成功了一大半了。


1.尽量减少请求次数,能抓列表页就不抓详情页
2.不要只看 Web 网站,还有 App 和 H5,他们的反爬虫措施一般比较少
3.如果真的对性能要求很高,可以考虑多线程(一些成熟的框架如 scrapy都已支持),甚至分布式


成果展示:echart+百度地图api


二手房

1 颜色由深至浅代表在售房价的高低



2 利用echart的热力图库渲染



3 利用百度地图api和echart联合展示,做了个小前端界面,内容如下:



单位:万




2 租房信息:









  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值