XPath以及lxml模块的学习使用

XPath是XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的计算机语言。XPath可以用来在xml文档中对元素和属性进行遍历。利用XPath,我们可以先将 HTML文件 转换成 XML文档,然后用 XPath 查找 HTML 节点或元素。在爬虫中使用XPath可以快速查找到你想要的内容。

XPath的开发工具也有不少,我用的是以下两个,分别是Chrome插件 XPath Helper和Firefox插件 XPath Checker,使用这些开发工具只是帮我们学习XPath语法,并不是用它去提取数据。

XPath语法:

1、选择节点(标签):

“/html/head/meta“:能够选择head下所有的meta标签

2、"//":能够从任意节点开始选择

eg:“//li“:选择当前页面的所有“li”标签

3、@符号的用途:

选择具体某个元素:“//div[@class='indent']/ul/li”  选择class=indent下的ul下的所有li,获取其内容

4、获取文本

“/a/text()”:获取a下的文本

"/a//text()":获取a下的全部文本

lxml模块

在python中,一般使用lxml模块来使用XPath

下载:pip install lxml

但是在python中并不是直接使用lxml模块,而是使用这个模块里面的etree这个类

from lxml import etree   #导入模块

#这并不是个完整代码,仅供演示
html = etree.HTML("html字符串")
html.xpath("Xpath语法")  

下面是一个爬虫小例子,利用了Xpath去爬取豆瓣上电影的url地址。一般来说我们可以现在谷歌浏览器中使用 XPath Helper使用Xpath来获取到想要的内容,然后在粘贴到代码中使用。

from lxml import etree
import requests

#爬取网站的url
url = "https://movie.douban.com/chart"

headers={
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
}

#发送请求
response = requests.get(url,headers=headers)
#获取数据
html_str = response.content.decode()
# print(html_str)

#构造Xpath解析对象
html = etree.HTML(html_str)
# print(html)

# 获取所有电影的url地址,注意双引号中的引号要是用单引号
url_list = html.xpath("//div[@class='indent']/div/table//div[@class='pl2']/a/@href")
print(url_list)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值