如图,我想自定义红框里text的xpath,得到右边红框里的内容。用//span[contains(text(),'颗星')]/text()得到的节点不唯一。想利用红框中div的唯一id的写text节点,该如何写?

举报 使用道具
| 回复

共 5 个关于本帖的回复 最后回复于 2019-4-15 11:53

沙发
Fuller 管理员 发表于 2019-4-13 22:09:20 | 只看该作者
如果另一个含有“颗星”的内容并不在这个div下,那就好写:
  1. //div[@id='reviewMedly']//span/text()[contains(.,'颗星')]
复制代码


举报 使用道具
板凳
东皇田馥 初级会员 发表于 2019-4-14 15:41:20 | 只看该作者
Fuller 发表于 2019-4-13 22:09
如果另一个含有“颗星”的内容并不在这个div下,那就好写:

刚试过了,不幸的是在这个div下,包含“颗星”的text有很多个,定位编号23429的div下就有另一个。我想要的text应该是div下的第一个,那么该如何把这个条件写到xpath里呢?
举报 使用道具
地板
Fuller 管理员 发表于 2019-4-14 15:54:10 | 只看该作者
东皇田馥 发表于 2019-4-14 15:41
刚试过了,不幸的是在这个div下,包含“颗星”的text有很多个,定位编号23429的div下就有另一个。我想要 ...

如果另一个并不在span下,就可以这样写
  1. //div[@id='reviewMedly']//span[contains(text(),'颗星')]/text()
复制代码

举报 使用道具
5#
东皇田馥 初级会员 发表于 2019-4-14 23:04:44 | 只看该作者
多谢指点。解决了有评论的网页,但又有些网页没有评论出错,如下图所示。
在同一个div下,如何利用or运算符,使xpath表达式写成既能搜索span[contains(text(),'颗星')]/text()的,又能搜索H2[contains(text(),‘无顾客评论’)]/text()?


举报 使用道具
6#
Fuller 管理员 发表于 2019-4-15 11:53:50 | 只看该作者
东皇田馥 发表于 2019-4-14 23:04
多谢指点。解决了有评论的网页,但又有些网页没有评论出错,如下图所示。
在同一个div下,如何利用or运算符 ...

这种应该直接手工修改爬虫规则,不要用自定义xpath了。

点击 “测试”按钮,看到测试输出窗口以后,点击“数据规则”tab,看到的规则可以直接修改

例如,给那个抓取内容可以有再加一行xsl:value-of命令,一行采集有评论的,一行采集无评论的。

手工修改数据规则的时候,一定要注意操作顺序,因为自动生成的规则会把手工修改的内容冲掉,所以应该这样的顺序:
1,定义规则
2,点击工具条上的“存规则”,这样就保存了自动生成的规则
3,点击“测试”按钮,进入数据规则窗口,手工编辑规则
4,点击旁边的“保存修改”,把手工修改的内容存入服务器

点击保存修改以后,不能再点击“存规则”了,否则自动生成的规则再次冲掉手工修改的部分
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • Gephi社会网络分析-马蜂窝游记文本分词并同
  • Gephi社会网络分析-基于马蜂窝游记文本以词
  • 知乎话题文本根据词语间距筛选后生成共词矩
  • 马蜂窝游记文本分词后以词语间距为筛选条件
  • 学习使用apriori算法挖掘关联关系

热门用户

GMT+8, 2024-4-19 22:29