快捷导航
5 404

xpath定位问题

DuoRuaiMi 于 2018-8-10 17:23 发表 [复制链接]
1.PNG
一级规则:点击More第一级
二级规则:点击More第二级
我用xpath定位到了发起人过去总筹资额,为什么抓取时会出现上图的错误呢
举报 使用道具
| 回复

共 5 个关于本帖的回复 最后回复于 2018-8-11 17:08

Fuller 管理员 发表于 2018-8-10 18:12:39 | 显示全部楼层
发起人过去总筹资额,是不是自定义的xpath?我估计问题出在:[position()=2]这个上面,你是想把定义到的好几个节点中的第二个拿出来用,可以在这个上下文环境中不运行这样写。

自定义xpath的写法是有限制的:相对于整个整理箱对应的网页块节点,写相对的xpath,写成 // 开头的就是全局的xpath了,不是相对于整理箱的。

要在第几级自定义xpath?

这里有一组教程,其中第一个教程就是说怎样相对于整理箱节点写相对的xpath:https://www.gooseeker.com/doc/thread-701-1-1.html
举报 使用道具
DuoRuaiMi 中级会员 发表于 2018-8-11 11:59:05 | 显示全部楼层
Fuller 发表于 2018-8-10 18:12
发起人过去总筹资额,是不是自定义的xpath?我估计问题出在:这个上面,你是想把定义到的好几个节点中的第 ...

可是如果不能用position()=2,怎么定位到筹款额呢,求指教
举报 使用道具
Fuller 管理员 发表于 2018-8-11 12:32:07 | 显示全部楼层
DuoRuaiMi 发表于 2018-8-11 11:59
可是如果不能用position()=2,怎么定位到筹款额呢,求指教

这是哪级规则?我加载上来看看
举报 使用道具
DuoRuaiMi 中级会员 发表于 2018-8-11 14:33:02 | 显示全部楼层
Fuller 发表于 2018-8-11 12:32
这是哪级规则?我加载上来看看

二级规则,点击鼠标定位一直抓取到的不是筹款额,是前面的发起数1
举报 使用道具
Fuller 管理员 发表于 2018-8-11 17:08:01 | 显示全部楼层
DuoRuaiMi 发表于 2018-8-11 14:33
二级规则,点击鼠标定位一直抓取到的不是筹款额,是前面的发起数1

自定义xpath的写法有问题,不能用 //开头,而是用 .//开头,相对于容器节点的xpath写抓取内容的xpath

为了得到容器节点的xpath,首先不要自定义xpath,生成规则,

容器20180811165140.png
可见,容器节点的xpath是
  1. "//*[@class='ng-isolate-scope' and count(.//*[@class='campaignOwnerProfile-name ng-binding'])>0 and count(.//*[@class='itemValue ng-binding'])>0 and count(.//*[@class='itemValue ng-binding'])>0]
复制代码
定位到了一个名字很长的DOM节点上,接着观察要写自定义xpath的那个节点
住区20180811170049.png
而且能看到跟前一个抓取内容的xpath一模一样,因为他们有相同的class值,把这个xpath拷贝出来
  1. *//*[@class='itemValue ng-binding']
复制代码


观察一下,两个内容抓取一样的了,他们有共同的父节点
父节点20180811170503.png
为这个父节点生成xpath,搜索测试一下,只搜到一个,所以,可以先定位到他们的共同父节点,然后在用positon()区分开第几个

用.//开头,先定位到父节点,然后用div[2]走到第二个分支上,接着就是拷贝过来的xpath了,编辑一下,变成
  1. .//*[@class='campaignOwnerDetails-impact-list']/div[2]/*[@class='itemValue ng-binding']
复制代码


用这个xpath作为自定义xpath,就可以了




举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • 大型百货商场会员画像描绘
  • 自动导入导出数据
  • 批量爬取蘑菇街商品价格、评论信息
  • 微博用户数据分析
  • 批量爬取苏宁商品价格、评论信息

热门用户

集搜客GooSeeker网络爬虫 ( 粤ICP备11065265号-2 )

GMT+8, 2018-10-19 20:56