js 爬虫抓取网页数据(集搜客GooSeeker爬虫术语“主题”统一改为“任务” )

优采云 发布时间: 2022-03-27 09:23

  js 爬虫抓取网页数据(集搜客GooSeeker爬虫术语“主题”统一改为“任务”

)

  注:GooSeeker爬虫从V9.0.2版本开始,爬虫术语“主题”改为“任务”。在爬虫浏览器中,先命名任务,然后创建规则,然后登录集合。在Sooke官网会员中心的“任务管理”中,您可以查看采集任务的执行状态,管理潜在客户的URL,进行调度设置。

  一、什么时候需要自定义xpath?

  二、为数据自定义 xpath采集 规则

  XPath 是一串 html 节点,以 / 分隔,以便在 html 中定位信息节点。从XPath的第一个节点开始,在html的DOM树上一层一层的找到一个节点(参考MS牧手台的网页结构窗口),这个节点就是XPath的定位结果。一个XPath还可以定位一个节点或者多个节点的集合,还可以用一些函数计算布尔值。

  排序框就像一个盒子,里面可以存放很多抓取的内容(见下图右侧)。代表这个盒子的容器节点是创建排序框时自动生成的第一个容器节点。在它下面你可以创建一个树状结构的爬取内容。排序框的作用是在网页上限定一个范围,所有爬取的内容都在这个范围内。例如下图左侧,顶部的 DIV 定义了网页的范围。该范围通常是自动生成的,但是可以通过定位容器节点或复制示例地图来更改所选网页范围。

  定义范围的DIV是一个基点,在排序框内抓取内容的XPath表达式都是从这个基点开始定位的。所以内部XPath写成相对定位表达式,比如./div/... .or div/span/... or *//*[@class='title']/...,不写作为绝对定位表达式,比如/html/body/.....或者//div /span/....,因为这种格式是从网页的最高节点(html)开始的,简单来说就是开头不是 / 符号。

  所以需要保证一个原则:自定义的xpath是相对于基点的,基点是容器节点的xpath,内部爬取内容的xpath路径是相对于它定义的。在编写自定义 XPath 时,尽量不要使用它。绝对 XPath 定位表达式(即以 / 或 // 开头的表达式)。

  下面以百度新闻为例,讲解如何自定义xpath。点击下载本案例规则:百度新闻搜索结果

  

  2.1 设置排序框,将抓取到的内容进行映射。最好映射定位标记,可以提高定位精度;这里我们需要采集 整个搜索结果列表,还需要容器。节点“列”用作样本复制图或锚图以捕获多个样本。至此,规则的定义已经完成。

  

  2.2 点击测试,可以看到输出信息窗口中没有捕捉到部分结果的摘要信息,说明摘要有不同的网页结构。对于各种结构,我们可以按照以下步骤2.3、2.4、2.5、2.6个步骤。

  

  2.3 查看数据规则,每个爬取的内容都会有几个可选的xpath路径。自定义 xpath 时,只需使用第一个 XPath 进行转换。将双引号之间的 xpath 路径复制到显示 xpath 搜索框中(不包括 *)。其中*表示任意节点,//表示从当前节点开始的任意级别节点,如果不明白请先掌握“xpath基础”。

  

  2.4 XPath搜索框可用于获取节点的xpath,校验xpath语法,检查xpath是否定位准确等,当xpath语法正确且有节点时,点击搜索计算节点总数及其位置。点击下一项,一一查看节点信息。

  2.5 上面只有15个digest节点,但实际上有20个digest,所以需要另找digest的节点结构。点击网页上没有抓取到的摘要信息会定位到一个dom节点,根据节点情况选择“显示XPath***”模式,然后生成节点的xpath,然后搜索那个只是碰巧错过了。5 个汇总节点,表明这是我们正在寻找的另一种结构。

  注意:抓取内容的xpath是基于容器节点的相对路径。因此,不要选择绝对定位。最好生成一个较短的xpath路径,这样更适用。

  

  2.6 经过上面的分析,abstract的两个结构是:没有graph的xpath是//*[@class='c-summary c-row'],有graph的xpath是//*[ @class='c-span18 c-span-last'] 或 //*[@class='c-summary c-row c-gap-top-small'],根据这两种结构的异同来write 定位20条摘要信息的xpath,这里写成 //*[contains(@class,'c-summary c-row ')] or //*[@class='c-summary c-row '] | // *[@class='c-span18 c-span-last'] ,然后搜索完成。

  

  

  2.7 然后需要在抓取内容的高级设置中自定义xpath,操作:双击抓取内容“摘要”,勾选高级设置,选择自定义xpath,选择文本内容和专用定位,抓取内容用点填充表达式,然后粘贴上面写的xpath,用点填充定位表达式,最后保存。

  注意:点号表示从当前路径开始。上述xpath收录在容器节点的基点范围内。添加点号可以使范围更准确。另外,定位方式通常不会选择网页片段,否则采集会下来带有html编码的信息,不利于后期处理和分析。

  

  2.8保存规则,再次加载规则后报错,定位失败。由于百度搜索页面是实时变化的,所以第一个搜索结果缺少同新闻同新闻链接这两条信息,所以看到定位失败的提示,但是只要规则还是可以的采集@ > 到数据,会注意规则还是有效的,规则是不能修改的。如果想彻底解决这种网页变化导致某些信息丢失的情况,需要做一个自定义的xpath,否则会出现定位失败的情况,前提是找一个比较完整的示例页面信息作为一项规则。

  

  2.9 点击同一条新闻的信息,找到它所在的页面节点,然后选择“Show XPath***”模式得到它的xpath表达式,然后点击搜索查看。

  

  2.10 对于这种只存在于某些网页中的信息,自定义xpath时只能选择专用定位。将上面的 xpath 复制到抓取内容表达式中,并填写 . 在定位标志表达式中。

  注意:如果设置了自定义xpath的抓取内容,并且还需要内容映射,可以选择排序框范围内的任意一个节点映射到它。

  

  2.11 点击测试,如果正确,您将在输出信息窗口中看到数据。如果抓到空白信息,说明xpath没有以容器节点的xpath路径开始,需要重写。如果看到下图提示,说明xpath有语法错误,请检查xpath语法。

  

  自定义xpath不仅有上述用法,还可以精确定位、过滤信息、拼接字符串等,具体请参考《Xpath常用功能用法》。

  请看专用定位和两用定位的区别

  三、自定义爬虫路由的xpath

  爬虫路线通常用于设置下级线索和点击。常规爬虫路由只能一键设置。请看它与连续动作的区别。

  遇到循环点击的情况,有两种解决方法,如下:

  四、自定义 xpath 以实现连续动作

  连续动作可以设置多个连续动作,包括点击、悬停、输入、滚动、提交、选择。信息采集”

  注意:用于连续操作的 xpath 支持绝对路径和相对路径。请根据实际网页编写action对象的xpath。

  如有疑问,您可以或

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线