XPATH应该怎么写?

需要获取成对出现的<TH><TD></TD></TH>
let th=document.evaluate(".//th[not(@marked)][following-sibling::*[1][name()='td']]",i_section,null,7,null)报错,Uncaught TypeError: Cannot read property 'length' of undefined,请问正确的应该怎么写?

第1个回答  2020-07-13

描述

nodename    选取此节点的所有子节点。    

/    从根节点选取。    

//    从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。    

.    选取当前节点。    

..    选取当前节点的父节点。    

@    选取属性。    

路径表达式

结果

bookstore    选取 bookstore 元素的所有子节点。    

/bookstore    选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!    

bookstore/book    选取属于 bookstore 的子元素的所有 book 元素。    

//book    选取所有 book 子元素,而不管它们在文档中的位置。    

bookstore//book    选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。    

//@lang    选取名为 lang 的所有属性    

举例

1.查找页面根元素://

2.查找页面上所有的input元素://input

3.查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素,使用绝对路径表示, 单/号)://form[1]/input

4.查找页面上第一个form元素内的所有子input元素(只要在form元素内的input都算,不管还嵌套了多少个其他标 签,使用相对路径表示,双//号)://form[1]//input

5.查找页面上第一个form元素://form[1]

6.查找页面上id为loginForm的form元素://form[@id='loginForm']

7.查找页面上具有name属性为username的input元素://input[@name='username']

8.查找页面上id为loginForm的form元素下的第一个input元素://form[@id='loginForm']/input[1]

9.查找页面具有name属性为contiune并且type属性为button的input元素://input[@name='continue'][@type='button']

10.查找网页中所有属性为id的元素 😕/@id

2.对于节点查找的内容进行修饰

举例

路径表达式

结果

/bookstore/book[1]    选取属于 bookstore 子元素的第一个 book 元素。    

/bookstore/book[last()]    选取属于 bookstore 子元素的最后一个 book 元素。    

/bookstore/book[last()-1]    选取属于 bookstore 子元素的倒数第二个 book 元素。    

/bookstore/book[position()❤️]    选取最前面的两个属于 bookstore 元素的子元素的 book 元素。    

//title[@lang]    选取所有拥有名为 lang 的属性的 title 元素。    

//title[@lang='eng']    选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。    

/bookstore/book[price>35.00]    选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。    

/bookstore/book[price>35.00]/title    选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。    

3.选取未知节点

通配符

描述

*    匹配任何元素节点。    

@*    匹配任何属性节点。    

node()    匹配任何类型的节点。    

举例

路径表达式

结果

/bookstore/*    选取 bookstore 元素的所有子元素。    

//*    选取文档中的所有元素。    

//title[@*]    选取所有带有属性的 title 元素。    

4.选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

路径表达式

结果

//book/title | //book/price    选取 book 元素的所有 title 和 price 元素。    

//title | //price    选取文档中的所有 title 和 price 元素。    

/bookstore/book/title | //price    选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。    

5.关键字

用例

举例

text()    book/author/text()    

string()    book/author/string()    

data()    book/author/data()    

.    book/author/.    

举例

XML例子

<book>     <author>Tom <em>John</em> cat</author>     <pricing>         <price>20</price>         <discount>0.8</discount>     </pricing> </book>

text()

经常在XPath表达式的最后看到text(),它仅仅返回所指元素的文本内容。

爬取的xpath格式为book/author/text() 爬取下来的内容是Tom cat 其中的John不属于author直接的节点内容。

string()

string()函数会得到所指元素的所有节点文本内容,这些文本讲会被拼接成一个字符串。

爬取的xpath格式为book/author/string() 爬取下来的内容是Tom John cat author头到尾部中间所有的内容都爬出来

data()

大多数时候,data()函数和string()函数通用,而且不建议经常使用data()函数,有数据表明,该函数会影响XPath的性能。

爬取的xpath格式为book/pricing/data() 爬取下来的内容是返回分开的20和0.8 他们的类型并不是字符串而是xs:anyAtomicType,于是就可以使用数学函数做一定操作。

爬取内容都为数字的时候只能使用data(),不能使用text()或 string(),因为XPath不支持字符串做数学运算。

作者:小小咸鱼YwY

出处:https://www.cnblogs.com/pythonywy/p/11082153.html

关于作者:再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达

本作品采用署名-非商业性使用-禁止演绎 4.0 国际 进行许可,转载请标明作者与出处

分类: 爬虫好文要顶 关注我 收藏该文  小小咸鱼YwY
关注 - 4
粉丝 - 302+加关注00« 上一篇: 描述符\get/set/delete,init/new/call,元类
» 下一篇: 网络框架,互联网的组成,OSI七层协议,抽象层posted @ 2019-06-25 12:28  小小咸鱼YwY  阅读(1584)  评论(3)  编辑  收藏
评论列表  #1楼  2019-06-25 13:26 惊天二谢谢支持(0) 反对(0)  #2楼  2019-06-25 13:36 惊天二谢谢了支持(0) 反对(0)  #3楼  [楼主] 2019-06-25 14:07 小小咸鱼YwY@ 惊天二
不客气支持(0) 反对(0)刷新评论刷新页面返回顶部注册用户登录后才能发表评论,请 登录 或 注册, 访问 网站首页。【推荐】了解你才能更懂你,博客园首发问卷调查,助力社区新升级
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】开放下载!《OSS运维基础实战手册》

个人信息





构建程序的过程本质上是对规范调试的过程--------------------------------------------点击查看博主生活照--------------------------------------------夜间模式:关闭--------------------------------------------QQ : 568972484
微信: YwYbetheone
个人博客: Mr.Yang's Blog
个人音乐网站: 爱琴音乐
电台: 每天两分钟精通python爬虫昵称: 小小咸鱼YwY
园龄: 1年2个月
粉丝: 302
关注: 4+加关注

<2020年7月>    

28    29    30    1    2    3    4    

5    6    7    8    9    10    11    

12    13    14    15    16    17    18    

19    20    21    22    23    24    25    

26    27    28    29    30    31    1    

2    3    4    5    6    7    8    

我的标签

    drf框架(15)

    Vue-CLI(13)

    电商相关爬取(6)

    BBS(6)

    hook框架frida(5)

    tornado(4)

    appium(3)

    Java(3)

    Git详细操作(3)

    定时任务和异步任务(3)

    更多

    积分与排名

    积分 - 190814

    排名 - 2915

    随笔分类 (572)

    django(61)

    Flask(16)

    github(9)

    GO(17)

    jupyter notebook(1)

    linux(20)

    python学习日记(116)

    shell(1)

    Typora(2)

    vs(1)

    vs自学日记(7)

    Vue(26)

    并发编程(8)

    博客园(10)

    个人博客搭建(6)

    力扣题库(22)

    爬虫(127)

    前端(50)

    数据库(22)

    微信小程序(11)

    小程序(22)

    异常(17)

    随笔档案 (494)

    2020年7月(8)

    2020年6月(14)

    2020年5月(4)

    2020年4月(9)

    2020年3月(10)

    2020年2月(5)

    2020年1月(10)

    2019年12月(13)

    2019年11月(49)

    2019年10月(78)

    2019年9月(76)

    2019年8月(74)

    2019年7月(48)

    2019年6月(41)

    2019年5月(48)

    2019年4月(7)

    最新评论

    1. Re:博客园美化小火箭

    谢谢

    --PeterWilliam

    2. Re:前端实现文件下载所有方式

    炫酷啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    --xiaobaotao

    3. Re:drf框架中jwt认证,以及自定义jwt认证

    @嗨,阿良 看过视频...

    --小小咸鱼YwY

    4. Re:drf框架中jwt认证,以及自定义jwt认证

    看老哥的博客也应该是老男孩儿的师兄了,文章写的是真详细

    --嗨,阿良

    5. Re:爬虫整理

    @xiaozailong...

    --小小咸鱼YwY

    6. Re:爬虫整理

    大佬,求极验验证码的的破解方法,自己研究了一段时间,滑块总是跑偏,求解

    --xiaozailong

    7. Re:python日记整理

    @十七Index 谢谢...

    --小小咸鱼YwY

    8. Re:python日记整理

    强啊

    --十七Index

    9. Re:GO语言介绍以及开发环境配置

    学习了,关注你

    --十七Index

    10. Re:python爬虫网页解析之parsel模块

    @我叫刘小花 什么密码...

    --小小咸鱼YwY

    阅读排行榜

    1. python爬虫(爬取图片)(16036)

    2. python爬虫(爬取视频)(13072)

    3. python-爬虫学习整理目录(4164)

    4. django根据已有数据库表生成model类(3446)

    5. python日记整理(3222)

    6. python爬虫网页解析之parsel模块(3084)

    7. js中scroll滚动相关(2906)

    8. pandas模块(很详细归类),pd.concat(后续补充)(2884)

    9. Scrapy中response属性以及内容提取(2799)

    10. Python3安装与使用urllib2包之小坑(1933)

    Copyright © 2020 小小咸鱼YwY
    Powered by .NET Core on Kubernetes
本回答被网友采纳