活动地址:CSDN21天学习挑战赛
目录
html字符串(python)——lxml库解析——HTML页面——Xpath提取——获取数据
lxml库是XML和HTML的解析器,主要功能为解析其中的数据,也可利用XPath语法定位特定的元素及节点信息
pip install lxml
主要使用lxml中的etree类
实例1——
- from lxml import etree
-
- text = '''
-
- wen
- cute
- 184
-
- '''
- # 开始初始化
- html = etree.HTML(text) # 这里需要传入一个html形式的字符串
- print(html)
- print(type)
- # 将字符串序列化为html字符串
- result = etree.tostring(html).decode('utf-8')
- print(result)
- print(type(result))
输出——
0x1d3a7483640> - <class 'type'>
- class="friend">
- class="name">wen
- class="good character">cute
- class="height">184
-
- <class 'str'>
-
- 进程已结束,退出代码0
实例2:读取并解析HTML文件——
创建html文件
- from lxml import etree
-
- # 将html文件进行读取
- html = etree.parse('index.html')
-
- # 将html内容序列化
- result = etree.tostring(html).decode('utf-8')
- print(result)
- print(type(result))
- html = etree.HTML(result) # 这里需要传入一个html形式的字符串
- print(html)
- print(type)
输出——
- "en">
- "UTF-8"/>
-
python之lxml库
-
- "林" class="student">19-year-old
-
"文" class="student">18-year-old
-
- "西红柿">生的
-
"月饼">豆沙馅 -
-
class="time">2018.9.5-2021.6.9 -
class="incident">we are good friends -
- <class 'str'>
0x2117a800dc0> - <class 'type'>
-
- 进程已结束,退出代码0
XPath(XML Path Language)是一门在xml文档中查找信息的语言,可用来在xml文档中对元素和属性遍历
常用路径表达式:
用于查找某个特定节点或者包含某个特定的值的节点,被嵌在方括号中。
XPath通配符可以用来选取未知的XML元素
通过在路径表达式中使用‘|’运算符,可选取若干路径
插件下载地址:https://download.csdn.net/download/weixin_62599885/86401664
打开chrome——点击右上角(三个点)——更多工具——扩展程序——将插件拖入
·点击碎片图案,选择XPath插件,选择固定
·定位爬取内容:按住x键,选中要爬取的信息即可获取标签路径
依然使用上面的index.html文件
- from lxml import etree
-
- html = etree.parse('index.html')
- print(type(html)) # 显示etree.parse() 返回类型
-
- result = html.xpath('//wi')
-
- print(result) # 打印
标签的元素集合 - print(len(result))
- print(type(result))
- print(type(result[0]))
输出——
- <class 'lxml.etree._ElementTree'>
- [
0x20e534f37c0>, 0x20e5370fb00>] - 2
- <class 'list'>
- <class 'lxml.etree._Element'>
-
- 进程已结束,退出代码0
- from lxml import etree
-
- html = etree.parse('index.html')
- result = html.xpath('//wi/@class')
-
- print(result)
输出——
['student']
- from lxml import etree
-
- html = etree.parse('index.html')
- result = html.xpath('//ul/li[@name="林"]')
-
- print(result)
输出——
[0x2b6654df880>]
- from lxml import etree
-
- html = etree.parse('index.html')
- result = html.xpath('//ul/ti')
-
- print(result)
输出——
[0x24d9c46fb00>, 0x24d9c46fa80>]
- from lxml import etree
-
- html = etree.parse('index.html')
- result = html.xpath('//ul/ti//@class')
-
- print(result)
输出——
['time', 'incident']
- from lxml import etree
-
- html = etree.parse('index.html')
- result = html.xpath('//ul[last()]/wi//@love-food')
-
- print(result)
输出——
['月饼']
- from lxml import etree
-
- html = etree.parse('index.html')
- result = html.xpath('//ul[last()-1]/wi')
-
- print(result[0].text)
输出——
18-year-old
- from lxml import etree
-
- html = etree.parse('index.html')
- result = html.xpath('//*[@class="incident"]')
- #tag方法可以获取标签名
- print(result[0].tag)
输出——
ti