0./能访问直接子节点,子孙节点是访问不了的
以上面的文档为例,我们一开始处于doc这个标签(就是整个文档最开始的地方),如果我们调用 /
来访问子节点的话,只能访问到html, head是html的子节点,所以这个方法如果单独使用使非常鸡肋
的,只有搭配 // 在文档中找一个特定的标签的时候会有奇效,但是即便如此,他返回的还是一个列表
还有一点,//A/B是找,所有A标签下,的所有的B标签,这和Beautiful.find不同,不论是怎样,他都
会把所有的,符合条件的元素筛选出来,而不是只选择一个
1.//A 从一整个文档中找到名字为A的标签,所有的标签,他返回的是一个列表,列表里面有所有的
标签名称为A的元素 直接直接电话和间接子节点都会被访问到,其实//和 / 的唯一区别在于有没有考
虑到层级关系
2、*表示统配符,所有的元素都搭配的上//*会返回文档中的所有内容
3.//DDD/B
这个意思是,我们需要找到标签B,但是定语是,这是一个在DDD标签下的B
4./*/*/*/BBB这个表示我们想要找到BBB这个标签,但是这个标签有三个父级标签
5.方括号可以进一步制定元素,可以访问第几个比如
/AAA/BBB这是表示寻找在当前的子级节点下是否有AAA这个标签,且这个标签含有BBB这个标签
如果有是吧BBB全部返回的
但是有时候我们不需要所有的BBB只需要其中一个两个
/AAA/BBB[1]这表示我们选择了在/AAA标签下的第一个BBB
/AAA/BBB[last()]表示我们选择最后一个BBB元素
6.用@id可以用来查找属性比如//BBB[@id]就是查找有id这个属性的元素
@*就是选择有属性的标签
//BBB[not@*]是选择有没有属性的标签
7,starts-with函数
‘//a[start-with(@href,"http://")]’即可表示的是,找到标签A,且这个标签含有比http://开头的
href属性
8. contain函数
‘//a[contain(@href,'http://')]’表示找到标签A,且这个标签有href属性,且这个属性包含http
这个字符串
9. and函数
xpath('//div[contains(@id,'test')] and contain(@id,'title')')
这。。就是两个条件都要符合没啥说的
10.text()函数就获得一个标签的内容呗。
11.extract()
被xpath的是一个selecter对象,用extract()提取其中的标签