一款爬虫租房软件。先上个源码。https://github.com/answershuto/Rental欢迎指导交流。效果图搭建Node.js环境并启动服务安装node和npm,使用express模块??启动服务,添加自己需要的中间件。这不是本文的重点。可以参考网上的一些教程搭建环境。获取导航页的URL和打开58同城首页的数据。主要是爬取和分析杭州的二手房,所以进入杭州租房。http://hz.58.com/chuzu/pn1/?key=%E6%9D%AD%E5%B7%9E%E7%A7%9F%E6%88%BF%E5%AD%90&cmcskey=%E7%A7%9F%E6%88%BF%E5%AD%90&final=1&PGTID=0d3090a7-0004-f43c-ee04-95c2ea3d031f&ClickID=6可以得到这串url,查了下pn后面的数字不难找到theupperandlowerpages是该页的页码,?下面是一些带参数的get请求。使用函数从页码中获取正确的URL。functiongetUrl(page=1){return'http://hz.58.com/chuzu/pn'+page+'/?key=%E6%9D%AD%E5%B7%9E%E7%A7%9F%E6%88%BF%E5%AD%90&cmcskey=%E7%A7%9F%E6%88%BF%E5%AD%90&final=1&PGTID=0d3090a7-0004-f43c-ee04-95c2ea3d031f&ClickID=6';}根据上面我们可以通过URL访问每个页面上的所有租赁信息。使用cheerio模块来解析dom。安装cheerio模块,使用cheerio模块解析dom,然后就可以像jquery一样访问dom了。varcheerio=require('cheerio');让$=cheerio.load(html);获取每条租赁信息的URL打开开发者模式,osX(option+command+I),windows(F12),然后就可以在elements中看到文档结构了。(这里以chrome为例)可以看到对应的a标签,我们只需要提取url,以及对应的href,就是它点击跳转的url。[单房]支持包月文桐路梧桐公寓耀江文翠园中豪清远a标签的class为t。使用$('a.t')获取a标签的所有对象。得到的是一个数组,遍历取出href属性即可。for(leti=0;i<$('a.t').length;i++){rentalObj.add($('a.t')[i].attribs.href)}得到这些URL,然后Then您可以使用这些URL访问特定的租赁信息,每个URL对应一个租赁页面。根据租赁信息的URL访问相应的页面。爬取数据,先进入页面,打开开发者模式。这个时候我们需要分析房屋的位置信息,进行可视化展示。$('td.house-xqxq-contenta.ablue')加上parent标签可以过滤出更有针对性的dom。此时过滤掉小区名称、本月均价、所在商圈等信息的dom,我们现在只需要第一个dom中的数据,就可以访问[0]的数组。此外,还需要在页面中显示房屋信息的图片。如果找到对应的dom,可以发现id是smainPic。$('#smainPic')['0'].attribs.src可以通过这种方式访问??得到图片的url。其他的我们可以用同样的方法获取很多相关数据,比如$('.house-price').text()获取价格数据,$('span.tel-num.tel-font')。text()可以得到房东的联系方式。通过百度地图可视化展示这里使用百度地图apihttp://lbsyun.baidu.com/index.php?title=jspopularvarmap=newBMap.Map("container");//创建地图实例map.centerAndZoom("杭州",12);varlocalSearch=newBMap.LocalSearch(map);localSearch.setSearchCompleteCallback(function(searchResult){varpoi=searchResult.getPoi(0);/*location信息*/})ocalSearch.search(params[url].location);获取经纬度后,使用对应的api在地图上显示。展示效果后,大家可以发挥自己的想象力。关于反爬虫在爬取过程中发现58同城的反爬虫策略,快速访问会让你输入验证码来验证是人操作,而不是代码访问。只要是人们可以正常访问,不影响用户正常体验的网站,都有办法绕过反爬虫策略。先用比较慢的方式发送http请求访问,另外最好每隔一段时间停下来,再继续访问。除了伪装成带有User-Agent字段的浏览器。最安全的方法是购买代理,让代理使用不同的ip地址访问网站,这样可以绕过反爬虫机制。具体方法可以参考反爬虫策略的相关文章。作者简介:染墨邮箱:answershuto@gmail.com或answershuto@126.comGithub:https://github.com/answershuto博客:http://answershuto.github.io/知乎专栏:https://zhuanlan.zhihu.com/ranmo掘金:https://juejin.im/user/58f87ae844d9040069ca7507os中国:https://my.oschina.net/u/3161824/blog转载请注明出处,谢谢。欢迎关注我的公众号