python中实现XPath的lxml模块
qingheluo2020-04-06清河洛274
lxml是一个HTML/XML的解析器,主要功能是解析和提取数据,在解析HTML的时候,如果HTML代码不规范,该模块会自动补全。使用pip install lxml安装模块1、导入模块
from lxml import etree
2、解析文件或字符串为HTML文档并返回
etree.parse(filename,parser=None)
加载指定文件内容并使用parser指定的解析器解析,默认使用XML解析器
myparser=etree.HTMLParser(encoding="utf-8")
etree.HTMLParser方法返回HTML解析器
...
lxml是一个HTML/XML的解析器,主要功能是解析和提取数据,在解析HTML的时候,如果HTML代码不规范,该模块会自动补全。
使用pip install lxml安装模块
1、导入模块 from lxml import etree 2、解析文件或字符串为HTML文档并返回 etree.parse(filename,parser=None) 加载指定文件内容并使用parser指定的解析器解析,默认使用XML解析器 myparser=etree.HTMLParser(encoding="utf-8") etree.HTMLParser方法返回HTML解析器 设置parser=myparser表示使用HTML解析器 etree.HTML(str) 将字符串解析为HTML文档 3、使用etree.tostring()方法把解析的文档转换为字符串 etree.tostring(html,encoding=‘utf-8‘).decode(‘utf-8‘) 4、使用解析对象的xpath(xpath_str)方法使用XPath语法选取所需内容 该方法返回一个list,包含所有选取到的节点
例如现在要获取demo.html文档的第3、4个ul中的所有a标签的href值和文本值
parser=etree.HTMLParser(encoding=‘utf-8‘) html = etree.parse(‘demo.html‘,parser=parser) res=html.xpath(‘//ul[position()>2 and position()<5]‘) #选取第3、4个ul节点 for re in res: href=tr.xpath(‘.//a/@href‘)[0] #或者使用get()方法获取指定属性值 href=tr.xpath(‘.//a‘)[0].get(‘href‘) #前面不加点(.)会在整个html中查找 #如果a标签是子标签可以使用‘a/@href‘或者‘./a/@href‘ cont=re.xpath(‘.//a/text()‘)[0] #循环获取ul子孙节点a标签的href属性值和文本值