一、xpath
1.从github上下载xpath压缩包,解压
【 GitHub - eliasdorneles/xpath_helper: XPath Helper Chrome extension modded 】
点击code--download zip--解压缩--打开chorme--扩展程序--直接将已经压缩的文件夹拖进去,ctrl+shift+x使用
注:xpath严格规范html,每一个标签必须有结束标签
2.xpath的使用【解析本地文件、直接解析服务器响应的数据--response.read().decode('utf-8')】服务器响应数据用的最多
导入etree库
from lxml import etrre
(1)解析本地文件【etree.parse】
html_tree = etree.parse('xx.html')
xpath基本语法:
/1/ 路径查询:// 所有节点,不考虑层级关系
/ 子节点,只看当前节点的子节点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<ul>
<li>武汉</li>
<li>北京</li>
</ul>
</body>
</html>
html_tree = etree.parse('D:\python学习\python文件\\爬虫\\test.html')
lst = html_tree.xpath('//body//li/text()')
print(lst)
print(len(lst))
# ['武汉', '北京']
# 2
text()--获取标签内容
/2/ 谓词查询 //div[@id] 【div是标签名字,类似于/1/中的ul和li之类的路径关系,@id是div中的标签中所含的属性】
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<ul>
<li id="l1">武汉</li>
<li>北京</li>
</ul>
</body>
</html>
html_tree = etree.parse('D:\python学习\python文件\\爬虫\\test.html')
lst = html_tree.xpath('//ul/li[]@id]/text()')
print(lst)
print(len(lst))
# ['武汉']
# 1
获取特定的id值--[@id="l1"] 得到武汉
/2/ 属性查询:查询标签为li的id为l1的属性值【@class]
<!DOCTYPE html>
<html lang="en">
<head>