【阅读时间】查阅类文档
【内容简介】Xpath相关使用法法和例子文档,以供查阅(➜ 后是对应语句的输出output)
XPath 相关例子Note
例子1
1 | from lxml import etree |
//
绝对路径 text()
获取内容中的文字信息1
s1.xpath('//title/text()') ➜ ['My page']
/
相对路径1
s1.xpath('/html/head/title/text()') ➜ ['My page']
获取属性src
的值1
s1.xpath('//h2/a/@src') ➜ ['x']
获取所有属性href
的值1
s1.xpath('//@href') ➜ ['#']
获取网页中的所有文本1
2
3
4
5
6
7
8
9
10
11
12
13
14
15s1.xpath('//text()')
➜
['\n ',
'\n ',
'My page',
'\n ',
'\n ',
'\n ',
'Welcome to my ',
'page',
'\n ',
'This is the first paragraph.',
'\n ',
'\n ',
'\n']
获取网页中的所有注释1
s1.xpath('//comment()') ➜ [<!-- this is the end -->]
例子2
1 | sample2 = """ |
获取所有li
中的文本1
s2.xpath('//li/text()') ➜ ['Quote 1', 'Quote 2 with ', 'Quote 3 with ', 'Something here.']
获取第一个 第二个li
中的文本,两种写法均可1
s2.xpath('//li[position() = 1]/text()') ➜ ['Quote 1']
1 | s2.xpath('//li[1]/text()') ➜ ['Quote 1'] |
1 | s2.xpath('//li[position() = 2]/text()') ➜ ['Quote 2 with '] |
1 | s2.xpath('//li[2]/text()') ➜ ['Quote 2 with '] |
奇数 偶数 最后一个1
s2.xpath('//li[position() mod2 = 1]/text()') ➜ ['Quote 1', 'Quote 3 with ']
1 | s2.xpath('//li[position() mod2 = 0]/text()') ➜ ['Quote 2 with ', 'Something here.'] |
1 | s2.xpath('//li[last()]/text()') ➜ ['Something here.'] |
li
下面a
中的文本1
s2.xpath('//li[a]/text()') ➜ ['Quote 2 with ', 'Quote 3 with ']
li
下a
或者h2
的文本1
s2.xpath('//li[a or h2]/text()') ➜ ['Quote 2 with ', 'Quote 3 with ', 'Something here.']
使用 | 同时获取 a 和 h2 中的内容1
s2.xpath('//a/text()|//h2/text()') ➜ ['link', 'another link', 'Quote 4 title']
例子3
1 | sample3 = """<html> |
获取 a
标签下 href
以https开始的1
s3.xpath('//a[starts-with(@href, "https")]/text()') ➜ ['Scrapy', 'Scrapinghub', 'Scrapinghub Blog']
获取 href
=https://scrapy.org1
s3.xpath('//li/a[@href="https://scrapy.org"]/text()') ➜ ['Scrapy']
获取 id
= begin1
s3.xpath('//li[@id="begin"]/text()') ➜ ['begin']
获取text
= Scrapinghub1
s3.xpath('//li/a[text()="Scrapinghub"]/text()') ➜ ['Scrapinghub']
获取某个标签下 某个参数 = xx1
s3.xpath('//li[@data-xxxx="end"]/text()') ➜ ['end']
1 | s3.xpath('//li[@abc="abc"]/text()') ➜ ['end'] |
例子4
1 | sample4 = u""" |
获取 class
= test 标签中的所有文字1
2s4.xpath('//p[@class="test"]/text()')
➜ ['\n 编程语言', '\n ', 'javascript\n ', '\n ']
使用String
来获得文字段; strip()
移除字符串收尾字符,默认为空格1
2
3
4
5print (s4.xpath('string(//p[@class="test"])').strip())
➜
编程语言python
javascript
C#JAVA
获取所有class
属性中以content开始的1
s4.xpath('//p[starts-with(@class,"content")]/text()') ➜ ['a', 'b', 'c', 'd']
获取所有class
属性中包含content的1
s4.xpath(('//*[contains(@class,"content")]/text()')) ➜ ['a', 'b', 'c', 'd', 'e']