集搜客GooSeeker网络爬虫

标题: 层级抓取,第二级DS打数机调度抓取 失败 [打印本页]

作者: meicairen    时间: 2016-12-29 10:18
标题: 层级抓取,第二级DS打数机调度抓取 失败
四个规则主题名:
列表页第一级:路标_商户列表
商户详情页第二级:路标_商户列表_商户详情  //*[contains(@class, 'branch')]/text()
商户详情页第二级连续动作&层级抓取一级:路标_商户列表_商户详情_更多信息
商户详情页第二级连续动作&层级抓取二级:路标_商户列表_商户详情_更多信息_详情

整个规则测试无大问题,现出现一个问题就是:

抓取第二个主题规则,也即是“商户详情页第二级”,DS打数机匹配失败,但是又能输出正确数据。
劳烦,帮忙查看下是什么问题。

[attach]4164[/attach]
作者: ym    时间: 2016-12-29 10:32
你把采集失败的网址加载到规则里分析一下,通常是结构不同导致的,参考教程http://www.gooseeker.com/doc/article-272-1.html
另外,你说的DS打数机抓取失败但又能得到正确的数据,这个不太可能,得到的数据应该是抓成功的网页,抓失败的都不会生成xml文件
作者: ym    时间: 2016-12-29 11:21
测试了一下你的规则,抓失败不是第二级规则的问题,而是第三级规则造成的,你把第三级规则的整理箱标签都做上定位标志就好了
[attach]4166[/attach]


作者: ym    时间: 2016-12-29 11:47
你的第三级规则,“营业时间”有时会改变顺序,这样就会采集失败,可以删掉这个标签或者是不勾关键内容,这样即使错位也不影响采集,如果一定要抓营业时间这个信息,只能自定义xpath来提取,如下图
[attach]4167[/attach]


作者: ym    时间: 2016-12-29 14:08
你的第二级规则和第三级规则可以合并到一个规则里,因为不用点击“更多信息”,就可以抓里面的“详情”链接
作者: meicairen    时间: 2016-12-29 15:02
ym 发表于 2016-12-29 14:08
你的第二级规则和第三级规则可以合并到一个规则里,因为不用点击“更多信息”,就可以抓里面的“详情”链接 ...

整个怎么抓

作者: ym    时间: 2016-12-29 15:12
本帖最后由 ym 于 2016-12-29 15:14 编辑

直接抓,你直接在第二级规则的样本页面,找到“详情”对应的网页节点映射到整理箱的新标签里就行
[attach]4189[/attach]

作者: meicairen    时间: 2016-12-29 15:26
ym 发表于 2016-12-29 14:08
你的第二级规则和第三级规则可以合并到一个规则里,因为不用点击“更多信息”,就可以抓里面的“详情”链接 ...

您好,我尝试了下,是可以把三级规则并在二级里面,但是按照您给的自定义xpath失败了,麻烦您帮忙看下,是什么原因:

[attach]4194[/attach]

[attach]4195[/attach]

[attach]4196[/attach]


作者: meicairen    时间: 2016-12-29 15:28
ym 发表于 2016-12-29 15:12
直接抓,你直接在第二级规则的样本页面,找到“详情”对应的网页节点映射到整理箱的新标签里就行

...

这样啊,太厉害了,又学到一招了

作者: meicairen    时间: 2016-12-29 15:47
ym 发表于 2016-12-29 15:12
直接抓,你直接在第二级规则的样本页面,找到“详情”对应的网页节点映射到整理箱的新标签里就行

...

整个我解决好了,那个“营业时间”xpath自定义的一直没设置好,能帮我看下吗

作者: ym    时间: 2016-12-29 16:02
本帖最后由 ym 于 2016-12-29 16:37 编辑

要选文本内容和专用定位,还要在定位标志表达式里填上点,另外建议对详情链接这些隐藏的信息做上定位标志映射,提高定位精确度
[attach]4201[/attach]


作者: meicairen    时间: 2016-12-29 16:09
按照您给的方法,测试了下还是不行

作者: meicairen    时间: 2016-12-29 16:11
ym 发表于 2016-12-29 16:02
要选内容定位和专用定位,还有在定位标志表达式里填上点,另外建议对详情链接这些隐藏的信息做上定位标志映 ...

我估计是我自定义输入的公式错误了,有几个字符可能输入错了,您能把您输的公式贴出来吗?

作者: ym    时间: 2016-12-29 16:36
//*[contains(.,'营业时间')]/following-sibling::span

你还要把规则里的连续动作删掉,第三级都没有用了
作者: meicairen    时间: 2016-12-29 17:22
ym 发表于 2016-12-29 16:36
//*[contains(.,'营业时间')]/following-sibling::span

你还要把规则里的连续动作删掉,第三级都没有用了 ...

营业时间,我测试成功了。能帮我解释下,你这个xpath公式分为几个部分,分别是什么含义吗?我想其他字段也这样定义

作者: meicairen    时间: 2016-12-29 17:52
meicairen 发表于 2016-12-29 17:22
营业时间,我测试成功了。能帮我解释下,你这个xpath公式分为几个部分,分别是什么含义吗?我想其他字段 ...

您方便的时候可以帮我写下“详情”的xpath公式吗?

作者: Fuller    时间: 2016-12-29 21:09
meicairen 发表于 2016-12-29 17:22
营业时间,我测试成功了。能帮我解释下,你这个xpath公式分为几个部分,分别是什么含义吗?我想其他字段 ...

ym给出的自定义XPath应该这样理解:

1,定位标志表达式,是
  1. .
复制代码

表示任何一个节点。所以,这个定位表达式就是永远有效了。这个定位标志表达式是抓取规则加载到工作台上的时候使用的。如果所有抓取内容都这样定义规则,就不可能加载失败了。

如果网页上的内容有时候有有时候没有,这样写定位标志表达式就总是有效

2,抓取内容表达式:由DS打数机使用,而不是由MS谋数台使用,所以,这个表达式决定了是否能抓到内容,而不管是否能把规则加载到工作台上。

ym这种写法是一种很巧妙的用法,做出来的规则无论什么时候都能加载到工作台上,但是,如果你把大部分抓取内容都这样处理,等下次加载规则的时候,你会发现抓取内容定位到的节点会很怪





欢迎光临 集搜客GooSeeker网络爬虫 (https://www.gooseeker.com/doc/) Powered by Discuz! X3.2