一、lxml模块介绍及安装,Xpath语言了解
1. lxml模块是python爬虫中的一个解析器,Xpath是一门在xml文档中根据节点查找信息的语言。
可以参考菜鸟联盟学习xpath
2. 安装 pip install lxml
3.网页知识了解xpath节点及常用提取属性
标签: div ul li a table tr td th p span
节点: 树形结构 父 子 同胞 先辈 后代
提取数据常用的属性:标签/text()
a标签:文本提取a/text() 超链接(也就是跳转的url) 提取a/href
二、
lxml模块下的xpath解析提取
将html源码转换为element html对象,变量selector
from lxml import etree
selector=etree.HTML(网页源码)
数据变量1=selector.xpat('xpath表达式')
from lxml import etree
file=open('/Users/shixin/Downloads/10-lxml模块及xpath解析/10-lxml模块及xpath解析/xpath.html','r',encoding='utf-8')
html = file.read()
#print(html) #获取的HTML
selector = etree.HTML(html)
#获取title
title = selector.xpath('//title/text()')[0]
print(title)
h1 = selector.xpath('//h1/text()')[0].strip() #列表索引 然后去除空格
print(h1)
haha= selector.xpath('//div[@class="works"]/text()') #class前加@
print(haha)
结构化提取(for循环,变量xpath的写法):
infos=selector.xpath('//a')
print(len(infos))
for info in infos:
a_text=info.xpath('text()')[0]
a_href=info.xpath('@href')[0]
print(a_text,a_href)
练习
一、div标签文本提取
将学习视频中xpath.html文件中div标签下文本值
“第一个div” ,“第二个div” 使用xpath结构化提取并打印输出
二、ul标签文本提取
将xpath.html文件中ul标签下“流程” ,“xpath学习”,“流程2”文本值
使用xpath结构化提取并打印输出
三、过滤标签
将xpath.html文件中的第一个div下的前3个a标签的文本及超链接
使用xpath结构化提取,打印输出
四、requests模块和lxml&xpath结合提取数据
结合上节课requests模块知识,将阳光电影网导航栏的文本及超链接结构化提取
divs=selector.xpath('//div[@class="works"]/text()')
print(divs)
uls=selector.xpath('//ul/text()')
print(uls)
infos2=selector.xpath('//div[@class="works"][1]/ul[@class="title"][1]/li[position()<4]/a')
for infos2 in infos2:
a_text = infos2.xpath('text()')[0]
a_href=infos2.xpath('@href')[0]
print(a_text,a_href)