集搜客网络爬虫易于操作的一个关键特色是:直观标注,在网页上点选内容,就能生成爬虫规则。其实还有更加高效的采集方法,有些网页采用了手机网站的实现模式,网页上的内容是动态生成的,通过http的xhr消息从网站服务器下载数据,再用前端程序在网页上展示出来。如果遇到这种网站,更加简便高效的数据采集方法:抓包。 本文讲解怎样定义有抓包功能的爬虫任务,如果抓到的数据是json格式,怎样用集搜客的入库软件快速转换成excel格式。 注意:本功能需要旗舰版及更高权限,而且需要下载数据管家(增强版网络爬虫)V10.1.0及其更高版本,请点击本链接升级账号的级别。 1. 采集案例 下面假定要采集携程酒店信息: 采集规则:抓包案例_携程酒店 样本网址:https://hotels.ctrip.com/hotels/list?city=32&checkin=2020/12/11&checkout=2020/12/12&optionId=32&optionType=City&directSearch=0&display=%E5%B9%BF%E5%B7%9E&crn=1&adult=1&children=0&searchBoxArg=t&travelPurpose=0&ctm_ref=ix_sb_dl&domestic=1& 采集内容:作为演示案例,一方面从网页上采集酒店的名称、位置、价格,同时通过抓包的方式监控这些网址上的通信消息: https://m.ctrip.com/restapi/soa2/16709/json/HotelSearch* https://m.ctrip.com/restapi/soa2/16709/json/hote1search* 2. 操作步骤详解 第一步:正常定义网络爬虫规则 1.1. 标注采集内容 本文不赘述,基本的定义规则方法可以参看 1. 《定义爬虫规则采集网页数据》:用第一个酒店作为样例,利用直观标注功能,把网页上的名称、位置、价格信息映射到规则中。 2. 《网络爬虫采集列表数据》:指定前两个样例,网络爬虫就能得知样例复制的规律,就能将所有酒店采集下来。 定义好的抓取数据规则如下图: 1.2. 加载采集更多 这个网页滚动到最后是“搜索更多酒店”按钮,那么定义一个翻页规则即可,采用“点下一页按钮”类型的翻页。如下图 第二步:观察消息包 本规则的目的是要截获http消息,然而http消息太多,必须设定过滤条件,集搜客网络爬虫采用匹配网址的方式进行过滤,所以,首先要找出来哪些网址上的消息是要截获的。那么就需要使用集搜客网络爬虫软件的开发者控制台分析一下网络流量。 2.1. 打开开发者工具 在集搜客网络爬虫的浏览器中加载目标网页,然后同时按 ctrl + shift + c 键,就能把当前网页的开发者工具打开。跟chrome浏览器的开发者工具完全一样。 2.2. 分析消息包 选择network选项卡,就会开启监听网络消息的功能。在浏览器中滚动页面,就会激发很多网络消息,如下图 着重观察xhr消息类型,一般是这种类型的消息携带数据。点击一条消息,可以看到详细的内容。 如果这个网址是需要的,点击鼠标右键可以用菜单拷贝网址: 第三步:设置抓包功能 集搜客网络爬虫在定义规则模式下,左栏会显示5个工作台,点击5号tab,可以看到下图的内容: 勾选“抓包”,就能显示一个输入框,里面输入要监听的网址,一行一条网址,网址中加入通配符:* 号,就能监听多条类似的网址。通配符可以放在开头、中间和结尾,可以出现多个星号。例如 https://m.ctrip.com/restapi/soa2/16709/json/HotelSearch* https://m.ctrip.com/restapi/soa2/16709/json/hote1search* 这表示监听了两类网址。 第四步:运行爬虫并查看结果文件 4.1. 设置爬虫参数 通用参数可以适应大部分网站,个别网站有些特点,需要设定爬虫参数应对,例如,针对携程网站,应该调慢滚屏速度,否则会跳过去一些消息。如下图,将滚屏速度设置成负数,数字越大,速度越慢。 跟普通爬虫任务一样运行,具体参看《启动数据采集》。 打开一个原始采集结果文件,可以看到多了dumphttp字段,里面就是监听到的消息的内容。 第五步:采集结果转换成excel格式 采集结果转换成excel的方法跟普通任务一样,参看《打包下载excel格式的数据》。 监听到的消息内容往往是json格式的,那么就会在到处的excel文件的字段oResponseBody中看到json内容。集搜客的json入库工具可以进一步解析json内容,将json内容进一步转换成excel格式。 5.1. 筛选相同网址的消息内容 在设置监听的网址时,如果输入了多种网址,或者匹配规则很宽泛,会监听到多种消息内容,必须现在excel中使用排序功能把各类网址对应的内容归归类。因为每一类的json结构是不一样的,要归类以后再导入集搜客JSON入库工具,否则,不同类型的数据就混乱了。 未完 |