XPath语法有很多,但常用的只有几个。为了方便起见,我们只需要知道以下内容!
XPath (XML Path Language)是一种在HTMLXML文档中搜索信息的语言,可以用来遍历HTMLXML文档中的元素和属性。
00-1010环境安装:
PIP LXML的解析原理:html标签以树形显示。
实例化一个etree对象,将需要解析的页面源代码数据加载到对象中,调用etree对象的xpath方法,结合不同的xpath表达式,实现标签定位和数据提取。让我们看看这个test.html代码:
!DOCTYPE html
html lang='en '
头
meta charset='UTF-8 '
测试标题bs4/标题
/head
身体
差异
100英里/p遵守你的诺言
/div
div class='song '
Pvirtuous笔/p
pwxdzh/p
ptzdhj/p
p逼真的酒窝/p
www.song.com/'title='赵匡胤'目标='赛尔夫'
跨度这是跨度
宋朝之所以是最强大的朝代,不是因为军队强大,而是因为经济非常强大,人民富裕/a。
一朵云出现在我和天堂之光之间,把他的城市藏在我忧郁的心里
img src=' http://www . Baidu.com/meinv . jpg ' alt=' ' '/
/div
div class='tang '
保险商实验所
lia href=' http://www . Baidu.com ' title='愤怒的烧鹅'。清明节期间,雨下得很大。路上的行人都想失去灵魂。问我餐馆在哪里。牧童指着杏花村/a/li
lia href=' http://www . 163.com ' title=' Qin '秦汉朝闭关锁国时,长征未归,龙城飞将在,呼玛都阴山未教/a/li
Lia href=' ' alt=' qi 'bldzfj房子很常见,我前几天听说过,它是长江以南的美丽风景,在花季再次遇见你/a/li
莉娅:杜甫/阿/莉
a href=' Du ' Du Mu/a/Li
libxfdlh/b/li
蜜月/我/李
lia href=' http://www . haha.com ' ID=' feng '曾经在这里玩耍的凤凰,以至于这个地方以它们的名字命名,现在已经把它遗弃在这条荒凉的河流上,吴宫的小路因杂草而弯曲,金的衣服是古老的灰尘/a/li
/ul
/div
/body
/html html实例化etree对象
解析('文件名')3360将本地html文档加载到这个对象中。HTML(pate_text):将从网络获得的页面数据加载到该对象的代码如下:
#使用lxml.etree.parse()解析html文件。默认情况下,该方法使用“XML”解析器,因此遇到非标准html文件时会解析错误。
#创建自己的html解析器以避免错误,并添加解析器参数。
解析器=etree。HTMLParser(编码='utf-8 ')
Tree=etree.parse ('test.html ',parser=parser)标记定位
最左边的/:如果最左边的xpath表达式以/开头,则xpath表达式必须从根标签定位指定的标签(如果标签较多,则公式会很长,因此,此方法不常用。)tree.xpath('/html/head/meta') #定位meta的非最左边的/3360表示分层树. xpath('/html//meta') #定位meta的最左边的//:XPath表达式可以从任何位置定位tag tree.xpath('//mate ')。#定位元属性定位:tageName[@attrName='value']#用类歌定位div下的所有P
tree . XPath('//div[@ class=' song ']/p ')
# Print 3360[元素p在0x256b1982e00,元素p在0x256b1982e40,元素p在0x256b1982e80,元素p在0x256b1982ec0]索引定位:tag[index](索引从1开始)# Position到div下面的第二个p,带有class song。
tree . XPath('//div[@ class=' song ']/p[2]')
#打印:【0x1f4a62a2e00处的元素p】还有其他不常用的定位方法:模糊匹配等。Get text /text():直接文本内容。
//text():所有文本内容
tree . XPath('//div[@ class=' song ']/p[2]/text()')
# print ['wxdzh']以获取属性:/@ attnametree . XPath(//a[@ ID=' feng ']/@ href)
# Print ['http://www.haha.com']
tree . XPath('//a[@ id=' feng ']/@ id ')
#打印['丰']