前嗅网络发表于2022年5月16日11:30最后回复于2022年5月16日11:30

【从零开始学爬虫】采集谷歌网页列表数据

484浏览量

0评论

关注 “前嗅大数据”

数据大牛一起成长,做牛气哄哄的大数据人

图片



采集网站

【场景描述】采集谷歌浏览器关键词搜索出的网页列表数据

【源网站介绍】谷歌一家位于美国的跨国科技企业被公认为全球最大的搜索引擎公司业务包括互联网搜索、云计算广告技术等,同时开发并提供大量基于互联网的产品与服务

【使用工具】前嗅ForeSpider数据采集系统,免费下载:

http://www.forenose.com/view/forespider/view/download.html

【入口网址】

https://www.google.com/search?q=apple&ei=FtsaY7KIJdCnoATFw4fYDg&start=0&sa=N&ved=2ahUKEwiy65bMiIf6AhXQE4gKHcXhAes4ChDy0wN6BAgBEEE&cshid=1662704515605056&biw=885&bih=755&dpr=1

【采集内容】采集谷歌“apple”关键词下的全部列表数据,包括来源、标题以及摘要。

 图片

待采集内容


思路分析

配置思路概览: 

图片




配置步骤

. 新建采集任务

选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,自定义任务名称并输入在【任务名称】框内,点击完成

 图片

新建采集任务


二.模板配置

1.翻页链接采集配置

查找翻页链接及其规律

在入口地址页内打开“F12”,按如下步骤找到翻页地址,并复制刷新后的翻页链接地址

 图片

翻页链接位置


对比观察翻页链接的规律 

图片

翻页链接


观察发现:随着翻页变化,页码数与请求网址(Requestrian URL)中“start=”后的数字相关。所以,其规律为:

"https://www.google.com/search?q=apple&ei=K_UaY4yIFNqBxc8PuNiymAk&start="+页码数减1后乘以10+"&sa=N&ved=2ahUKEwjMyfG7oYf6AhXaQPEDHTisDJM4KBDy0wN6BAgBEEE&biw=553&bih=755&dpr=1"

找到翻页链接位置及其规律就可以对应去编写脚本。

脚本的创建与编写 

图片

脚本的创建与编写


脚本文本:

url u;//定义一个u,赋予其url属性

var url_beg=DOM.FindClass("AaVjTc","table");//定义一个url_beg,其属性位置位于 table class ="AaVjTc"所属节点下

var ur=url_beg.child.child.next.next.next;//定义一个ur,其位置属性位于url_beg二级子节点三级兄弟节点下

for(int i=0;i<=7;i++){ //为翻页数字页码写一个循环

u.title="谷歌第"+(i+1)+"";//将标题内容设置为:谷歌第几页

var ur="https://www.google.com/search?q=apple&ei=K_UaY4yIFNqBxc8PuNiymAk&start="+i*10+"&sa=N&ved=2ahUKEwjMyfG7oYf6AhXaQPEDHTisDJM4KBDy0wN6BAgBEEE&biw=553&bih=755&dpr=1";//根据翻页链接规律,拼全链接

u.urlname=ur;//取得已拼合链接

u.entryid=CHANN.id;

u.tmplid=2;//关联模板02

RESULT.AddLink(u); //输出采集结果

ur=ur.next;//进入下个翻页链接的采集

}


查看采集预览

查看采集预览,并将链接粘贴到浏览器验证一下是否采集正确。

图片

 采集预览


2.数据抽取

新建模板、添加数据抽取

如下新建模板并添加数据抽取,在示例地址框内输入任一翻页链接


 图片

新建模板、添加数据抽取


数据表结构创建

如下在表结构内创建出所需采集的字段

 图片

创建表结构


关联表单

数据抽取关联数据结构表单 


图片

关联表单


④创建并编写数据抽取脚本

如下创建脚本,并根据网页结构编写数据抽取脚本 

图片

脚本的创建与编写


脚本文本:

record re ;//定义一个re,赋予其record属性

var ret=DOM.FindClass("hlcw0c","div");//定义一个ret,其位置属性位于 div class="hlcw0c"所在节点下

while (ret){//遍历ret

var beg=DOM.FindClass("MjjYud","div",ret);//定义一个beg,其位置属性位于 div class="MjjYud"所在节点下

var pu =beg.child.child.child;// 定义一个pu,其位置属性位于 div class="Z26q7c UK95Uc jGGQ5e VGXe8"所在节点下

var tit=pu.child.child.child.next; //定义一个tit,其位置属性位于 h3 class="LC20lb MBeuO DKV0Md"所在节点下

var pag=tit.next;//定义一个pag ,其位置属性位于tit下一兄弟节点下

var con=pu.next;//定义一个con ,其位置属性位于pu下一兄弟节点下

re.page=DOM.GetTextAll(pag);//取得列表内容来源

re.title=DOM.GetTextAll(tit);//取得列表内容标题

re.content=DOM.GetTextAll(con);//取得列表内容摘要

RESULT.AddRec(re,this.schemaid);//输出采集结果

ret=ret.next;//进入下一个待采集列表

}


⑤查看采集预览

查看采集预览,并核对一下内容是否采集正确。 


图片

采集预览

 

图片


私信

举报