java爬取网页cookie_基于火车采集器的网页数据爬取——以链家网二手房为例

对于网页数据的爬取,常用的软件有火车采集器与八爪鱼采集器,本文呢我们就以火车采集器(文末有安装包分享)分享链家网二手房的房源信息爬取。爬取过程可以大致分为两个部分:(一)寻找网页规则(二)设置爬取规则(1)采集网址规则;(2)采集内容规则;(3)发布内容设置。第一个部分是相对比较难的部分,那么话不多说,我们就直接开始吧... 第一部分 寻找网页规则

我们先打开链家网的网址:https://gz.lianjia.com/

地点选择广州(为例),点击上方【二手房】进入初级页面。

86993c754303ffb756146ccff09834ef.png

网页中间这里的(区域、售价、房型、面积)等标签我们暂时先不选择,我们就爬取整个广州的试试,我们先拉到网页下面看看。

279bc07b1506073a2483e1665c281e17.png

下面就是一些基本的房源信息,每页大概有30个房源。

51ce95473ef23a2fe6c20b04b7d55eba.png

我们要做的第一步,就是寻找网页规则:,我们先拉到网页最下面,我们分别点开第2页、第3页、第4页、第5页,会发现有个惊天的秘密...

509c5a449f1d5da155b6d8620f3a2785.png

5afdbb5ca3c339d898a0d34a1ce4f17b.png

37fbc621afbf9eaacc678985e9084c3d.png

499d643f531a244caf90de7cd298975e.png

我们会发现每一页的网址其实有规律可循:

第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/

e6511bbb10c9da1515ecaeb7d8f85b2c.png

不过打开这两个网址,我们发现两个网页上的内容完全一致,所以这个规律对于第1页同样适用,因此我们就已经初步地把网址的分页规则给识别出来了。

529e423503817e7b0147d003f163694e.png

我们要做的第二步,就是寻找房源规则:

我们先任意点开同一页的三个房源信息:

8c07e682cbb04e7b415eeb38a05281a7.png

3aa99e4b274f90c092f7c45ad228f3f2.png

58beacf97a3ba14ee74aa5d6698edc5b.png

我们会发现它们的网址也有规律可循,就是后面这个数字不一样:

https://gz.lianjia.com/ershoufang/108400553948.html

https://gz.lianjia.com/ershoufang/108400416576.html

https://gz.lianjia.com/ershoufang/108400549521.html

那么我们就把这个房源规则找出来了。

按照以上的规则,我们首先可以获取到链家网二手房每一页的网址,然后可以获取每一页网址上每个房源信息的网址,有了每个房源信息的网址,我们就可以爬取有关房源的相关信息了,这就是网页信息爬取的逻辑。 第二部分 设置爬取规则 第①步:采集网址规则 我们首先第一步打开火车采集器8.5版本,初试界面就是这样:

313ddb7e6e3f1381434323ab5a787512.png

我们先新建一个分组,命名为“火车采集”,然后选中这个分组,新建任务,任务名就叫“链家二手房”,然后在其起始网址这里我们选择【添加】

5faa474a3e6c04ec33558c5047b2d71e.png

“添加开始采集地址”这里我们选择【批量/多页】,因为我们要爬取的是多页上的房源信息。地址格式我们就把第2页(除第1页外的其它页都可以)的网址(https://gz.lianjia.com/ershoufang/pg2/)复制粘贴上去,并把网址中的“2”选中点击最右边的【(※)】按钮,此举是为了将2这一页码数设置成变量。因为之前我们看网页规则,就知道每一页基本上就只有后面的数字在变。然后选择【等差数列】,首项为“1”,项数为“5”,公差为“1”,这个是为页码参数设置的,意味着我们要爬取的是第1—5页,如果要爬取更多的页,把项数修改成要爬的页数就可以,然后选择【添加】,再点击【完成】即可。

462347a7dcd9b8e5376d2145ac7bdfac.png

起始网址设置完成之后,我们在“多级网址获取”这里点击【添加】。 

d07ea4e463a67232284710d24e75b282.png

然后选择“网址获取选项”,选择“从页面自动分析得到地址链接”,在结果网址过滤这里,在“必须包含”内容框中填入房源信息的二级网址即(https://gz.lianjia.com/ershoufang/108400572613.html),之前我们已经找到二级网址的规则就是后面的108400572613是变化的,意味着它就是那个参数,那么按照第一步的做法,选中这一串数字,点击最右边的【()】将它设置成参数,意味着我们将爬取的每个房源信息都是长这个样子的。

d96f70761c9b76a9b9f9fd724c11fb51.png

接着我们需要获取Cookie,Cookie是指某些网站为了辨别用户身份,进行 跟踪而储存在用户本地终端上的数据。我们点击【浏览器登陆获取】即可。

7e6fa442aacebd3bb99a35c51b3152d1.png

点击之后,在弹出框里我们把网址(链家官网)复制上去,等待网页刷新之后,就会生成一个Cookie,我们点击【确定】即可。(此外还有不能返回Cookie的网站,我们需要通过Fiddler软件来找到Cookie,详情请参考下面:https://jingyan.baidu.com/article/e4511cf3326d832b855eaf73.html)

eb692ac128ab26efbd3c533736466faf.png

这样,我们就把第一步“采集网址规则”中的起始网址多级网址以及登陆Cookie设置好了,可以开始进行第二步,正式爬取数据了。

25d40de3de64babb72155f53ea8241a1.png

第②步:采集内容规则

首先我们删除这些软件自带的默认标签(标题、内容、作者、时间、出处)

3393c4861564f57675930572e590d4c5.png

       我们任意打开一个房源信息,只要是网页上有的我们双眼能看得到的东西,通常来说都能爬取。 比如,我们就以爬取这个房源的【名称】【总价】以及【经纬度】为例,进行示范操作,通常下面如果附有地图的话就有经纬度。

0db7003f8b338bb4a4385832100896a7.png

拉到网页下面,我们可以找到一个百度地图,地图上标注着这个房源所在的位置,这也就意味着我们能够爬取到它的经纬度信息。

fdf3e4d0ed4cd817ef8afe6cc2e020f0.png

在房源网页中右键打开【检查】和【查看网页源代码】,在【检查】页面选择上方的箭头,然后把箭头放在房源名称(彩虹楼,一梯两户......)上,然后在右侧会显示这一行的代码,我们复制代码标签【】,在网页源代码中我们【Ctrl+F】把代码标签复制检索,就能找到代码标签的所在位置,并且是唯一的,不会有第二个,这样才能精确地定位我们所需要爬取的数据的位置。

fb2cc280c2d871556e4ac3e90d2c0344.png

83cfdd6f800662064716661b78fabd4e.png

可以看到,房源名称所在行的代码为:

,我们可以通过前后截取获取房源名称。

点击【添加】一个标签,将标签名设置为【名称】,开始字段设置为【 title="】,结束字段就设置为【">】即可,点击确定。

5fad02737831c901f4ad5756be603eb2.png

对于房价,同样的道理,先找代码标签,然后再前后截取。这里必须要强调代码标签必须是唯一的,如果代码不是唯一的,将无法定位数据所在位置。 我们先在检查中找到代码标签【】 92fdf3253ab6b59500219cd25176c4e1.png 复制到网页源代码搜索,可以看到这个标签是唯一的(右上角1/1):

2ea88650db14a7e3c5f866498ab517d2.png

点击【添加】一个标签,将标签名设置为【总价】,开始字段设置为【】,结束字段就设置为【 】,确定即可。

86abad65e5b19684c11e359f2ff59ba0.png

同样,对于经纬度的话,我们直接在【网页源代码】中搜索,通常来说,经纬度的英文为lat(纬度)和lng(经度)或者position(定位)。

e96cf191577d8db4707937ab1397905b.png

可以看到,这行的代码为:resblockPosition:'113.306902,23.050961', 我们点击【添加】一个标签,将标签名设置为【经度】,开始字段设置为【resblockPosition:'】,结束字段就设置为【,】,确定即可。

54efa1bfe687022c73e139461d8a1773.png

点击【添加】一个标签,将标签名设置为【纬度】,开始字段设置为【resblockPosition:'113.306902,】,因为经度是变量,我们就把它设置为参数,【resblockPosition:'(※),】结束字段就设置为【',】即可

0617fadf41d995976d3e166d12cde8f1.png

任意选择一个房源信息的网址,把它复制到“典型页面中”,点击【测试】,我们可以看到,通过我们设置的采集规则,所需要的数据能够爬下来。说明爬取的内容规则我们已经设置完毕,接下来就设置一下保存路径就可以了。

7740a0bd8d0c6a0c3740187b90f577c3.png

第三步 发布内容设置 点击“第三步:发布内容设置”,勾选【启用:方式二:保存为本地Word、Excel、Html、txt等文件】【保存文件格式】设置为“所有记录保存在一个csv文件”,【保存位置】设置随便输入,这里我就直接保存在桌面,【文件模板】留到后面,【文件名格式】随便输入,【文件编码】选择“UTF-8”。

777a76593566c19506ef39284211d41d.png

对于文件模板,火车采集器会事先给我们一个模板,就在安装目录下,名称为【默认csv模板】的csv文件,我们先把它复制到桌面,再用记事本打开。

e1cfffe77d32dbac67504fa670077c37.png

打开模板之后是这样的:

99dae974b537ea2749e20bb0b20e755d.png

我们按照之前添加的4个【标签】(总价、名称、经度、纬度),更改如下,注意各个标签名要与火车采集器上添加的一样,同时逗号为英文。

b546963191e91979e6cac4d9fddd09dd.png

改好之后,我们另存为一个后缀名为csv的txt文件,命名为最终模板。

e8d95ba75ccfddd923dccba8d92c0deb.png

这时,我们再回到火车采集器这里,把刚刚保存的 【最终模板】 上传。

5d6616afa4efbe39e845f88f37588bf5.png

保存之后,软件就会自动提示你“新建任务成功”!

a1949166f094ba6e8ed1c9c5e4cd52f0.png

点击 【确定】 ,然后把分组以及分组下的任务两行的六个空格全部勾选上,然后点击 【开始】 按钮,那么数据就已经开始在爬取了。

16be2fd070f81ff41870d804f964823d.png

爬取成功界面:

e9911a095e47bdb1fe311577b2982088.png

最终爬取的数据,我们一共爬取的是5页数据,每页30个房源,所以总共是150个,并且我们要的名称、总价、经纬度都给爬取下来了:

ab97ba75682753c72f62dabd79494e1f.png

对于爬取数据,比较推荐Chrome谷歌浏览器,选择【链家网】作为爬取的对象,是因为它的网页结构比较简单,今天我们分享的算是比较初级的网页数据爬取方法,关键的是学会找出网页规则。 对于一些难以发现规律的复杂网页,我们以后还会分享全网页数据的爬取、循环标签以及POST请求的使用。 这里把火车采集器的安装包分享给大家: (7天有效)

链接:https://pan.baidu.com/s/1flQC9TRhIli_lof5yfV17g

提取码:eu9k


拓展阅读: 【胡说八道01】地理如何影响人类历史并决定当今世界? 【地理信息01】ArcMap中CAD数据 / 坐标数据(表格数据)的加载 【地理信息02】最最最纠结的基础知识——坐标系的认识与转换 【地理信息03】基于LSV地图+手机GPS定位的现状调研数据库构建 【地理信息04】选址基础分析——以简单数据为例分析租房选址 【地理信息05】城市土地变更以及规划实施评价 【地理信息06】基于GIS平台的城市多网点设施布局评估

ed3f48d705286cff81aca8a9d20663fc.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值