一、Xpath介绍
1)xpath简介
全称为XML Path Language 一种小型的查询语言
说道XPath是门语言,不得不说它所具备的优点:
可在XML中查找信息
支持HTML的查找
通过元素和属性进行导航
python开发使用XPath条件: 由于XPath属于lxml库模块,所以首先要安装库lxml。
2)xpath安装使用
# pip install lxml -i "https://pypi.doubanio.com/simple/" from lxml import etree selector=etree.HTML(源码) #将源码转化为能被XPath匹配的格式 selector.xpath(表达式) #返回为一列表
二、xpath查询方法
1)引入html文件(被查询的html)
html_doc = """ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div class="d1"> <div class="d2"> <p class="story"> <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and <a href="http://example.com/tillie" id="link3">Tillie</a> </p> </div> <div> <p id="p1">ALex is dsb</p> <p id="p2">Egon too</p> </div> </div> <div class="d3"> <a href="http://www.baidu.com">baidu</a> <p>百度</p> </div> </body> </html> """
2)使用方法
import requests from lxml import etree headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" } url = "https://news.baidu.com/" data = requests.get(url,headers=headers).content.decode() # 转解析类型 xpath_data = etree.HTML(data) # 调用xpath的方法 # xpath语法1.节点 / # 2 跨节点: // # 3 精确的标签 //a[@属性="属性值"] 属性加在[]中,再在属性前面加上@ # 4 标签包裹的内容 text() # 5 属性 @href result = xpath_data.xpath('/html/head/title') text = xpath_data.xpath('/html/head/title/text()') # 取文本 print(result) print(text) print(xpath_data.xpath('//a')) print(xpath_data.xpath('//a/text()'))