我们先打开链家网的网址:https://gz.lianjia.com/
地点选择广州(为例),点击上方【二手房】进入初级页面。
网页中间这里的(区域、售价、房型、面积)等标签我们暂时先不选择,我们就爬取整个广州的试试,我们先拉到网页下面看看。
下面就是一些基本的房源信息,每页大概有30个房源。
我们要做的第一步,就是寻找网页规则:,我们先拉到网页最下面,我们分别点开第2页、第3页、第4页、第5页,会发现有个惊天的秘密...
我们会发现每一页的网址其实有规律可循:
第2页:https://gz.lianjia.com/ershoufang/pg2/
第3页:https://gz.lianjia.com/ershoufang/pg3/
第4页:https://gz.lianjia.com/ershoufang/pg4/
第5页:https://gz.lianjia.com/ershoufang/pg5/
...
可是,我们又发现第1页的网址并不符合这样的规律,第1页的网址是https://gz.lianjia.com/ershoufang/。 按理来说,它应该是这样的:https://gz.lianjia.com/ershoufang/pg1/不过打开这两个网址,我们发现两个网页上的内容完全一致,所以这个规律对于第1页同样适用,因此我们就已经初步地把网址的分页规则给识别出来了。
我们要做的第二步,就是寻找房源规则:
我们先任意点开同一页的三个房源信息:
我们会发现它们的网址也有规律可循,就是后面这个数字不一样:
https://gz.lianjia.com/ershoufang/108400553948.html
https://gz.lianjia.com/ershoufang/108400416576.html
https://gz.lianjia.com/ershoufang/108400549521.html
那么我们就把这个房源规则找出来了。
按照以上的规则,我们首先可以获取到链家网二手房每一页的网址,然后可以获取每一页网址上每个房源信息的网址,有了每个房源信息的网址,我们就可以爬取有关房源的相关信息了,这就是网页信息爬取的逻辑。 第二部分 设置爬取规则 第①步:采集网址规则 我们首先第一步打开火车采集器8.5版本,初试界面就是这样:我们先新建一个分组,命名为“火车采集”,然后选中这个分组,新建任务,任务名就叫“链家二手房”,然后在其起始网址这里我们选择【添加】
“添加开始采集地址”这里我们选择【批量/多页】,因为我们要爬取的是多页上的房源信息。地址格式我们就把第2页(除第1页外的其它页都可以)的网址(https://gz.lianjia.com/ershoufang/pg2/)复制粘贴上去,并把网址中的“2”选中点击最右边的【(※)】按钮,此举是为了将2这一页码数设置成变量。因为之前我们看网页规则,就知道每一页基本上就只有后面的数字在变。然后选择【等差数列】,首项为“1”,项数为“5”,公差为“1”,这个是为页码参数设置的,意味着我们要爬取的是第1—5页,如果要爬取更多的页,把项数修改成要爬的页数就可以,然后选择【添加】,再点击【完成】即可。
起始网址设置完成之后,我们在“多级网址获取”这里点击【添加】。
然后选择“网址获取选项”,选择“从页面自动分析得到地址链接”,在结果网址过滤这里,在“必须包含”内容框中填入房源信息的二级网址即(https://gz.lianjia.com/ershoufang/108400572613.html),之前我们已经找到二级网址的规则就是后面的108400572613是变化的,意味着它就是那个参数,那么按照第一步的做法,选中这一串数字,点击最右边的【(※)】将它设置成参数,意味着我们将爬取的每个房源信息都是长这个样子的。
接着我们需要获取Cookie,Cookie是指某些网站为了辨别用户身份,进行 跟踪而储存在用户本地终端上的数据。我们点击【浏览器登陆获取】即可。
点击之后,在弹出框里我们把网址(链家官网)复制上去,等待网页刷新之后,就会生成一个Cookie,我们点击【确定】即可。(此外还有不能返回Cookie的网站,我们需要通过Fiddler软件来找到Cookie,详情请参考下面:https://jingyan.baidu.com/article/e4511cf3326d832b855eaf73.html)
这样,我们就把第一步“采集网址规则”中的起始网址、多级网址以及登陆Cookie设置好了,可以开始进行第二步,正式爬取数据了。
第②步:采集内容规则
首先我们删除这些软件自带的默认标签(标题、内容、作者、时间、出处)
我们任意打开一个房源信息,只要是网页上有的我们双眼能看得到的东西,通常来说都能爬取。 比如,我们就以爬取这个房源的【名称】、【总价】以及【经纬度】为例,进行示范操作,通常下面如果附有地图的话就有经纬度。
拉到网页下面,我们可以找到一个百度地图,地图上标注着这个房源所在的位置,这也就意味着我们能够爬取到它的经纬度信息。
在房源网页中右键打开【检查】和【查看网页源代码】,在【检查】页面选择上方的箭头,然后把箭头放在房源名称(彩虹楼,一梯两户......)上,然后在右侧会显示这一行的代码,我们复制代码标签【】,在网页源代码中我们【Ctrl+F】把代码标签复制检索,就能找到代码标签的所在位置,并且是唯一的,不会有第二个,这样才能精确地定位我们所需要爬取的数据的位置。
可以看到,房源名称所在行的代码为:
,我们可以通过前后截取获取房源名称。
点击【添加】一个标签,将标签名设置为【名称】,开始字段设置为【 title="】,结束字段就设置为【">】即可,点击确定。
对于房价,同样的道理,先找代码标签,然后再前后截取。这里必须要强调代码标签必须是唯一的,如果代码不是唯一的,将无法定位数据所在位置。 我们先在检查中找到代码标签【】 复制到网页源代码搜索,可以看到这个标签是唯一的(右上角1/1):
点击【添加】一个标签,将标签名设置为【总价】,开始字段设置为【】,结束字段就设置为【 】,确定即可。
同样,对于经纬度的话,我们直接在【网页源代码】中搜索,通常来说,经纬度的英文为lat(纬度)和lng(经度)或者position(定位)。
可以看到,这行的代码为:resblockPosition:'113.306902,23.050961', 我们点击【添加】一个标签,将标签名设置为【经度】,开始字段设置为【resblockPosition:'】,结束字段就设置为【,】,确定即可。
点击【添加】一个标签,将标签名设置为【纬度】,开始字段设置为【resblockPosition:'113.306902,】,因为经度是变量,我们就把它设置为参数,【resblockPosition:'(※),】结束字段就设置为【',】即可
任意选择一个房源信息的网址,把它复制到“典型页面中”,点击【测试】,我们可以看到,通过我们设置的采集规则,所需要的数据能够爬下来。说明爬取的内容规则我们已经设置完毕,接下来就设置一下保存路径就可以了。
第三步 发布内容设置 点击“第三步:发布内容设置”,勾选【启用:方式二:保存为本地Word、Excel、Html、txt等文件】,【保存文件格式】设置为“所有记录保存在一个csv文件”,【保存位置】设置随便输入,这里我就直接保存在桌面,【文件模板】留到后面,【文件名格式】随便输入,【文件编码】选择“UTF-8”。
对于文件模板,火车采集器会事先给我们一个模板,就在安装目录下,名称为【默认csv模板】的csv文件,我们先把它复制到桌面,再用记事本打开。
打开模板之后是这样的:
我们按照之前添加的4个【标签】(总价、名称、经度、纬度),更改如下,注意各个标签名要与火车采集器上添加的一样,同时逗号为英文。
改好之后,我们另存为一个后缀名为csv的txt文件,命名为最终模板。
这时,我们再回到火车采集器这里,把刚刚保存的 【最终模板】 上传。
保存之后,软件就会自动提示你“新建任务成功”!
点击 【确定】 ,然后把分组以及分组下的任务两行的六个空格全部勾选上,然后点击 【开始】 按钮,那么数据就已经开始在爬取了。
爬取成功界面:
最终爬取的数据,我们一共爬取的是5页数据,每页30个房源,所以总共是150个,并且我们要的名称、总价、经纬度都给爬取下来了:
对于爬取数据,比较推荐Chrome谷歌浏览器,选择【链家网】作为爬取的对象,是因为它的网页结构比较简单,今天我们分享的算是比较初级的网页数据爬取方法,关键的是学会找出网页规则。 对于一些难以发现规律的复杂网页,我们以后还会分享全网页数据的爬取、循环标签以及POST请求的使用。 这里把火车采集器的安装包分享给大家: (7天有效)
链接:https://pan.baidu.com/s/1flQC9TRhIli_lof5yfV17g
提取码:eu9k
拓展阅读: 【胡说八道01】地理如何影响人类历史并决定当今世界? 【地理信息01】ArcMap中CAD数据 / 坐标数据(表格数据)的加载 【地理信息02】最最最纠结的基础知识——坐标系的认识与转换 【地理信息03】基于LSV地图+手机GPS定位的现状调研数据库构建 【地理信息04】选址基础分析——以简单数据为例分析租房选址 【地理信息05】城市土地变更以及规划实施评价 【地理信息06】基于GIS平台的城市多网点设施布局评估