from lxml import etree #导入相应的第三方库
import requests
if __name__ == '__main__':
url = '……'
headers = {'……'}
html = requests.get(url, headers=headers).text
# 注意xpath表达式整体与局部的引号书写
# 实例化一个etree对象,且将被解析的页面源码数据加载到该对象中,两种方法:
tree = etree.parse("text.py") # 1、将本地的html文档中的数据加载到该对象中
tree = etree.HTML(html) # 2、直接将页面源码加载到该对象中
# /:表示的是从根节点开始定位,或表示的是一个层级
r1 = tree.xpath("/html/head/title") # xpath()返回的是一个列表,列表中的元素是Element类型的对象,未匹配到返回一个空列表
# //:表示的是多个层级,即可以从任意位置开始定位
r2 = tree.xpath("/html//div")
r3 = tree.xpath("//div")
# -属性定位://div[@class='song']
r4 = tree.xpath('//div[@class="song"]')
# -索引定位://div[@class='song']/p[3],其中索引值是从1开始的
r5 = tree.xpath('//div[@class="tang"]//li[5]/a/text()')[0]
# /text(),获取的是标签中直系的文本内容
r6 = tree.xpath("//li[7]/text()")
# //text(),获取的是标签中非直系的文本内容(即该标签中的所有文本)
r7 = tree.xpath('//div[@class="tang"]//text()')
# -取属性值:/@src
r8 = tree.xpath('//div[@class="song"]/img/@src')
print(r)
xpath之Python简述
于 2022-07-07 09:38:53 首次发布