比方说定好一条规则,抓取一个元素,class="rzzl bg black"
测试也通过,抓取也成功了。
过半小时一看,还是这个元素,class="rzzl bg red",网站给置红了,然后就报错抓不到了。

咋办?新人求指导!
举报 使用道具
| 回复

共 13 个关于本帖的回复 最后回复于 2015-10-26 23:42

沙发
Fuller 管理员 发表于 2015-9-30 09:54:28 | 只看该作者
可以用自定义xpath。
第一步,在MS谋数台上点击“测试”按钮,可以看到下部窗口出现采集结果
第二步,选择“数据规则”那个窗口标签,看到抓取规则

第三步,找到那个抓取内容,看到他的XPath表达式,比如,*//*[@class='rzzl bg black']/text()
第四步,把这个xpath表达式拷贝下来,用文本编辑器修改成 *//*[contains(@class, 'rzzl bg')]/text(),表示只要含有rzzl bg就可以了
第五步,在“创建规则”工作台上,找到整理箱中的那个抓取内容,双击它,看到如下窗口
第六步,选择“高级设置”,选择“自定义XPath”,选择“文本内容”,在“抓取内容表达式”处录入修改后的规则,选择“兼容定位”,最后选择保存

这样就用自定义xpath替换了自动生成的xpath

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
举报 使用道具
板凳
smthsiwei 初级会员 发表于 2015-9-30 10:28:04 | 只看该作者
赞,大神回复好快!
我试试先!
举报 使用道具
地板
smthsiwei 初级会员 发表于 2015-9-30 10:50:17 | 只看该作者
好像不太对。看来我对这个报错的定性有问题,可能不是因为 bg red造成的?

贴一下测试过程:

原数据规则:

<日增长率>
<xsl:value-of select="*//*[@class='rzzl bg red']"/>
<xsl:value-of select="*[@class='rzzl bg red']"/>
</日增长率>

修改后数据规则:
<日增长率>
<xsl:value-of select="*//*[contains(@class='rzzl')]"/>
<xsl:value-of select="*[contains(@class='rzzl')]"/>
</日增长率>

网页上是一个TD,谋数台显示class = ' rzzl red'

修改以后点击保存修改,测试单箱,还是取不到这个数。倒是改前改后都不报错。

why?
举报 使用道具
5#
smthsiwei 初级会员 发表于 2015-9-30 10:53:41 | 只看该作者
哦,好像忘了做高级设置了。再试试
举报 使用道具
6#
smthsiwei 初级会员 发表于 2015-9-30 11:00:44 | 只看该作者
ERROR: 两个样例的XPath表达式的路径长度不一样。
映射给两个样例的应该是具有相同父节点的兄弟节点

这是什么……
举报 使用道具
7#
Fuller 管理员 发表于 2015-9-30 11:21:42 | 只看该作者
smthsiwei 发表于 2015-9-30 10:53
哦,好像忘了做高级设置了。再试试

不好意思,是我写错了,应该是[contains(@class, 'rzzl red')],应该是 逗号,不应该是等于号
举报 使用道具
8#
Fuller 管理员 发表于 2015-9-30 11:25:31 | 只看该作者
smthsiwei 发表于 2015-9-30 11:00
ERROR: 两个样例的XPath表达式的路径长度不一样。
映射给两个样例的应该是具有相同父节点的兄弟节点

请看这个讨论: http://www.gooseeker.com/doc/thread-518-1-1.html
举报 使用道具
9#
smthsiwei 初级会员 发表于 2015-10-1 15:50:59 | 只看该作者
还有几个问题:
1、自动生成的代码,例如
<xsl:value-of select="*//*[@class='zkf' or starts-with(@class, 'zkf')]/text()"/>
<xsl:value-of select="*[@class='zkf' or starts-with(@class, 'zkf')]/text()"/>
<xsl:if test="@class='zkf' or starts-with(@class, 'zkf')">
<xsl:value-of select="text()"/>
</xsl:if>
为什么要有两行class匹配,为什么要有if test?
我试了下,把1/3/5三行删掉,测试单箱是可以成功取到数的。

2、在上述1~6步中间,最后两步的作用是什么?
没有配最后两步,测试单箱似乎也可以成功啊。
举报 使用道具
10#
smthsiwei 初级会员 发表于 2015-10-1 16:09:15 | 只看该作者
smthsiwei 发表于 2015-10-1 15:50
还有几个问题:
1、自动生成的代码,例如

又试了一下,只要第二句就可以成功了 -_-
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • 利用AI阅读和分析文本:扣子COZE记录用户反
  • 在网页片段内直观标注——以B站评论采集为
  • 利用AI阅读和分析文本:使用COZE建设游记文
  • 使用AI工具Kimi生成python代码为文本分析结
  • 苹果mac电脑安装集搜客网络爬虫软件失败的

热门用户

GMT+8, 2024-11-24 02:59