例如这个页面,服务器能抓到,但是物品名称那个位置的数据就抓不到

样本网址是:https://us.battle.net/wow/en/vault/character/auction/browse?reverse=true&sort=ilvl&filterId=-1&maxLvl=-1&start=0&n=Samnoh%27s%20Exceptional%20Leggings&qual=1&minLvl=-1&end=20

本帖子中包含更多资源

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

x
举报 使用道具
| 回复

共 18 个关于本帖的回复 最后回复于 2016-11-18 17:37

沙发
xandy 论坛元老 发表于 2016-11-16 18:03:48 | 只看该作者
这个网站还需要测试一下,测试好了回复你
举报 使用道具
板凳
Fuller 管理员 发表于 2016-11-16 19:16:03 | 只看该作者
抓到的文本是什么?空的?还是抓错了?

怎么测试的?点击“测试”按钮?还是运行DS打数机测试的?
举报 使用道具
地板
xandy 论坛元老 发表于 2016-11-17 16:55:47 | 只看该作者
先说说为什么通过直观标注或内容映射将#text()映射给各个采集内容后测试结果是空白的。罪魁祸首就是这个网页的一些节点定位不到。
比如这个:
  1. //*[@class='color-q4']/strong/text()
复制代码
xpath的路径是没错的,但是这个网页定位不到它,将它复制到xpath搜索框后点击搜索显示找不到DOM节点。

经过测试,将上面的xpath路径修改成下面的路径就可以了(这个网页table下面的区块节点都定位不到,只能定位到内容)
  1. //*[@class='color-q4']//text()
复制代码
所以在做规则的时候,先做普通的内容映射再自定义xpath就能够有效地抓取了(这一步的目的是为了让无效的路径变得有效),比如下面这个name的自定义xpath可以这样写

其他的可以分别这样写

解决了内容映射的问题,看看如何做样例复制,如上面的截图,给每个字段做上定位标志映射,因为容器节点的起始路径不对,导致测试的结果不全面,所以要在数据规则里面自己修改(红框内就是在数据规则里面直接修改的地方)
修改前

修改后

ps:在数据规则修改起始路径之后,不要点击测试,步骤是:点击右下角的保存修改->测试单箱(如果点击上面整理箱的测试的话,刚刚做的修改操作会无效,因为自动生成的xpath覆盖了修改了的)

然后就可以看到完整的数据了


xpath的相关教程参看:《自定义xpath

本帖子中包含更多资源

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

x
举报 使用道具
5#
Fuller 管理员 发表于 2016-11-17 18:46:45 | 只看该作者
xandy 发表于 2016-11-17 16:55
先说说为什么通过直观标注或内容映射将#text()映射给各个采集内容后测试结果是空白的。罪魁祸首就是这个网 ...

这个似乎是程序bug,我们技术团队深入查查,目前只能用自定义XPath的方法避开。
举报 使用道具
6#
2586664050 初级会员 发表于 2016-11-18 09:16:01 | 只看该作者
,谢谢
举报 使用道具
7#
2586664050 初级会员 发表于 2016-11-18 11:06:49 | 只看该作者
按照上述方式,开始抓取的时候提示匹配错误。但是测试单箱是成功的。

本帖子中包含更多资源

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

x
举报 使用道具
8#
xandy 论坛元老 发表于 2016-11-18 11:18:39 | 只看该作者
2586664050 发表于 2016-11-18 11:06
按照上述方式,开始抓取的时候提示匹配错误。但是测试单箱是成功的。

记得也不要点击保存规则,保存规则的话在“数据规则”里修改的xpath也够会被自动生成的重新覆盖掉。
我保存单箱之后直接点击“爬数据”,抓取到的是成功的,如下图所示

本帖子中包含更多资源

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

x
举报 使用道具
9#
2586664050 初级会员 发表于 2016-11-18 12:01:50 | 只看该作者
不点保存规定,还是现实匹配失败。

本帖子中包含更多资源

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

x
举报 使用道具
10#
2586664050 初级会员 发表于 2016-11-18 12:02:28 | 只看该作者
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<list>
<xsl:apply-templates select="//*[contains(@id,'auction-')]" mode="list"/>
</list>
</xsl:template>


<xsl:template match="//*[contains(@id,'auction-')]" mode="list">
<item>
<Name>
<xsl:value-of select=".//*[@class='color-q4']//text()"/>
</Name>
<Qty>
<xsl:copy-of select=".//*[@class='quantity']/text()"/>
</Qty>
<Item_Level>
<xsl:value-of select="normalize-space(.//*[@class='level']/text()[position()=1])"/>
</Item_Level>
<Time_Left>
<xsl:value-of select=".//*[contains(@class,'long')]/text()"/>
</Time_Left>
</item>
</xsl:template>
</xsl:stylesheet>
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • 运行Apple无法验证的程序的方法
  • 文本聚类分析软件的安装和使用方法
  • 利用AI阅读和分析文本:扣子COZE记录用户反
  • 在网页片段内直观标注——以B站评论采集为
  • 利用AI阅读和分析文本:使用COZE建设游记文

热门用户

GMT+8, 2024-12-23 15:02