HHDI爬虫任务配置说明html
1、 摘要正则表达式
爬虫任务能够从主流网站爬取相关数据存储到目标数据库表或者服务器本地文件夹spider-data中,支持以html和json的形式保存原网页信息。chrome
2、 操做步骤数据库
本文以安居客(https://yt.anjuke.com/sale/laishanqu/)网站为对象进行配置说明讲解。json
1. 建立网页爬虫任务网页爬虫
打开转换任务 > 新建网页爬虫。浏览器
图1 进入网页爬虫页面路径服务器
2. 基础信息配置网络
按照页面提示输入基本信息,其中任务编号和任务名称为必填项。并发
图2 基本信息页面
3. 登陆信息配置(大部分网站可忽略此步)
登陆信息配置主要为爬取网站用户名、密码和验证码等登陆信息。若是待爬取的网站信息不须要登陆,则能够直接跳过该部分的信息配置,若是须要登陆,可参考以下配置过程:
一、 点击登陆按钮,进入到登陆页面
图3初始页面信息
二、 根据以下操做获取须要填写的信息:
图4登陆页面信息
以上是获取【登陆URL】和【登陆用户字段】的操做过程(4步),其中的id:pwdUserNameIpt或者name: username可做为【登陆用户字段】信息,获取其余字段的操做都可参考该部分操做。配置结果参考以下:
图5登陆信息配置页面
4. 爬取页面配置
爬取页面配置是网页爬虫任务的主要配置项,主要配置入口页URL、下一页、详情页URL的爬取规则,配置好的规则以下图所示:
配置详解:
例如,咱们要爬取烟台市莱山区的二手房信息,入口页地址为:https://yt.anjuke.com/sale/laishanqu/,以分页列表方式显示各个二手房的标题和摘要信息:
点击某个房产信息标题后,咱们会进入该房产信息的详情页面,例:
此页面显示某房产的各项详细信息,咱们要爬取的就是这些详情页里边的数据:标题、总价、小区、户型、单价(下图红框中的数据)。
因此网页爬虫的爬取顺序是:进入入口页面->根据xpath找到列表页区域->进入其中的一个详情页->爬取详情页面中的数据->返回以前的列表页->爬取列表页中剩余的详情页信息->从入口页找到下一页->进入下一页的列表页->爬取下一页中的全部详情页->爬取全部列表页分页中包含的详情页数据。
了解了这个顺序,咱们依次来配置爬取页面中的各项参数,
一、 配置入口页面的url
入口页填入:https://yt.anjuke.com/sale/laishanqu/。页面编码通常不选或选择AUTO便可。
注意:暂不支持入口页面中的列表页url或详情页url是经过js、jsp等程序动态产生的数据。
二、 配置爬取区域(列表页区域)的xpath
具体方法以下图的步骤所示:
第5步便可获取列表区域的xpath,设置xpath的目的是尽可能缩小选中的范围,过滤掉不须要爬取的区域,并提升爬取效率,对于不少网站来说也能够不设置xpath。
Xpath的获取也能够经过Xpath Helper插件完成,后边有介绍。
三、 配置下一页URL检索规则
爬虫会将入口页及各列表页中符合该正则表达式的URL放入下一页的集合中,逐一进入爬取,此示例中下一页的地址为:
https://yt.anjuke.com/sale/laishanqu/p2/#filtersort
https://yt.anjuke.com/sale/laishanqu/p3/#filtersort
https://yt.anjuke.com/sale/laishanqu/p4/#filtersort
…
https://yt.anjuke.com/sale/laishanqu/p50/#filtersort
所以下一页的正则表达式为:
https://yt.anjuke.com/sale/laishanqu/p\d+/#filtersort
其中\d+表明全部的数字。
四、 配置详情页URL检索规则
和列表页相似,只有符合详情页正则表达式的url才会被爬虫进入解析,观察一下各个详情页url的特征:
咱们发现详情页url中红色部分都是变化的信息,因此能够用正则表达式的通配符来代替,正则表达式以下:
https://yt.anjuke.com/prop/view/.*\?from=filter&spread=commsearch_p&uniqid=.*®ion_ids=\d+&position=\d+&kwtype=filter&now_time=\d+
注意:黄色背景中的\?表示须要将url中的?转义为\?,由于?也是正则表达式中的特殊字符。
5. 配置目标数据库表和插入参数
将爬取后的数据写入目标数据链接的某张表中
6. 配置爬取字段
爬取详情页中的具体数据并将其写入到目标表对应的字段中,以下所示,咱们须要爬取标题、房价、户型、小区、单价这几项信息
其中最重要的是如何获取字段值的xpath,以“标题”为例,咱们须要执行如下操做来获取标题内容的xpath:
1) 在chrome浏览器中安装xpath helper插件,如何安装请参考该博客:
https://blog.csdn.net/love666666shen/article/details/72613143
2) 进入详情页后,按Ctrl+Shift+x呼出xpath helper的窗口,再按住Ctrl+Shift移动鼠标到要爬取的内容区域上,xpath helper窗口会显示该区域的xpath全路径:
3) 这样便可得到“标题”项的xpath:
/html[@class='hb-loaded']/body/div[@id='container']/div[@id='content']/div[@class='clearfix title-guarantee']/h3[@class='long-title']
注意:须要将xpath中的红色部分删除直接写/html/body,不然会解析不到数据,应变为:
/html/body/div[@id='container']/div[@id='content']/div[@class='clearfix title-guarantee']/h3[@class='long-title']
或者写成
//*[@id='container']/div[@id='content']/div[@class='clearfix title-guarantee']/h3[@class='long-title']
4) 将xpath和数据库字段对应起来:
5) 将其它字段配置好。
7. 爬虫参数配置
爬取参数用来配置爬虫的一些参数信息,如重试次数、爬取间隔参数等
重试次数:有时网络不稳定,可能会偶尔连不上页面,该参数表示访问失败后的重试次数。
爬取间隔:爬取完一页后,须要暂停多久再爬取下一个页面,主要防止对网站过分频繁的访问。
运行线程数:爬虫的并发线程个数。
超时时间:有时网站链接速度比较慢,日志中常常出现read time out 超时的状况,这时候须要调大超时时间,好比100秒,这样这种错误就很是少了。
是否去除HTML标签:爬虫爬取的原始内容中会包含html中的一下标签,好比<p><br>等,若是须要保留这些格式,可将选项配成N。
模拟浏览器标识:有些网站对浏览器版本有要求,该参数用来模拟某个版本的浏览器。
最大爬取记录数:对于记录数很是多的网站,在开始测试时,能够经过该参数限定爬虫最多能够爬取的记录条数。默认是0,不限制。
8. 保存并测试运行爬虫任务
测试成功后,能够将爬虫任务编入做业流程中定时或手工执行。