8.3.1、Python__Xpath解析数据安装lxml,xpath解析文件,解析本地文件,xpath基本语法

1、安装

pip insatll lxml
from lxml import etree

2、xpath解析文件

#(1)本地文件    etree.parse
#(2)服务器相应数据 response.read().decode('utf-8') etree.HTML()
##############数据如下
<ul>
    <li id="12" clazz = 15>北京</li>
    <li>上海</li>
    <li>武汉</li>
</ul>

3、解析本地文件

#xpath解析本地文件
tree = etree.parse('demo10pachong.html')
print(tree)

4、xpath基本语法

(1)路径查询(查看html文件中标签,层层深入)

  	//子孙节点
    	/子节
#tree.xpath('xpath路径')
li_list = tree.xpath('//body/ul/li')
print(li_list)
print(len(li_list))

(2)谓词查询,属性查询,模糊查询,内容查询

#查看包含id标签的
li_list2 =tree.xpath('//ul/li[@id]/text()')	#text是为了获取里面数据的
li_list2 =tree.xpath('//ul/li[@id="12"]/text()')	#获取id=12的		谓词查询
li_list2 =tree.xpath('//ul/li[@id="12"]/@class')	#获取id=12的,clazz的值	属性查询
print(li_list2)

#id中包含li的标签,模糊查询
li_list3 = tree.xpath('//ul/li[contains(@id,"l")]/text()')
print(li_list3)
d
#查询以l开头的标签,内容查询
li_list4 = tree.xpath('//ul/li[starts-with(@id,"l")]/text()')
print(li_list4)

5、解析

#1、获取网络源码
#2、解析hxml文件
#3、打印输出

from lxml import etree
import urllib.request
from fake_headers import Headers

#请求的url
url = "https://www.baidu.com/"

#请求头
header =Headers(
    browser='chrome',
    os = 'win',
    headers=True
)
#请求对象的定制
request = urllib.request.Request(url=url,headers=header.generate())

#模拟浏览器访问服务器
res = urllib.request.urlopen(request)

#获取网页源码
content = res.read().decode('utf-8')
print(content)

#解析网页源码,来获取数据
#解析服务器响应的文件
tree = etree.HTML(content)
# #获取数据
result = tree.xpath('//input[@id="su"]/@value')[0]
print(result)

猜你喜欢

转载自blog.csdn.net/nerer/article/details/121218941