简介
课程中有三种方法,这里只学习Xpath,减轻自己的学习压力,快速进入到Python安全攻防笔记中去
lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据
使用Xpath语法,需要提前安装 lxml库
前期准备
我们不是爬取到网页数据后,就可以直接使用Xpath语法,需要对它做一些格式上的转换
urllib 与 Beautifulsoup
未参与学习requests 与 xpath
吾选
并不是说二者不可以交叉,也是可以
但基于课程内容我就使用 requests 与 xpath 组合
#主要我去实验urllib与xpath虽然没有报错,但也没有得到数据
import requests
from lxml import etree
url = 'http://news.baidu.com/'
data = requests.get(url).content.decode('utf-8')
xpath_data = etree.HTML(data)
result = xpath_data.xpath('/html/head/title//text()')
print(result)
#运行结果 ['百度新闻——海量中文资讯平台']
核心语句
data = requests.get(url).content.decode('utf-8')
xpath_data = etree.HTML(data) #转解析类型 构造一个xpath解析的对象
text() 标签里面的内容
语法学习
几点说明
Xpath返回的数据类型为列表,所以可以利用下标取出内容
Xpath下标从1 开始,下标只能取平级关系,接下来解释什么是平级关系
路径表达式
节点 /
跨节点 //
精确标签 //a[@属性='属性值'] 属性值看网页本身是如何给的
标签包裹的内容 text()
属性 @属性
举例如下
result = xpath_data.xpath('/html/head/title//text()')
result = xpath_data.xpath('//a/text()')
result = xpath_data.xpath('//a[@mon="ct=1&a=2&c=top&pn=18"]/text()')
result = xpath_data.xpath('//a[@mon="ct=1&a=2&c=top&pn=18"]/@href')
选取未知节点
选取若干路径
案例实战
爬取单页面内容标题
查看页面源码
import requests
from lxml import etree
url = 'https://www.rdonly.com/?cikeee=friends'
data = requests.get(url).content.decode('utf-8')
xpath_data = etree.HTML(data)
find_data = xpath_data.xpath('//a[@rel="bookmark"]/text()')
print(find_data)
Xpath-helper谷歌插件介绍
我随意去网站上想找点Xpath语法实战的文档或视频来学习,结果发现这么款插件,可谓非常惊喜,一下子觉得那我不是白学一个早上
其实不然,我们还是要自己去学习一下Xpath,然后利用这款插件来学习Xpath实战语法,这可比看别人的视频或文档节约时间,主要是自己在动手操作
所以,我在下面介绍该插件的安装和简单实用,为了防止别人链接失效,我完全转载他人文章到我的知识库,为大家的安装和实用保驾护航
核心键: Ctrl+Shift+X 可以跳出界面(如果失败,先看插件是否安装成功,再看是否和浏览器快捷键冲突)
核心操作:
为什么说这个是学习Xpath的好插件
大家观察前面的语法,你会发现老师在课程中有“偷懒”行为,你且往下看
result = xpath_data.xpath('//a[@mon="ct=1&a=2&c=top&pn=18"]/text()')
这里使用跨节点// 直接跳转到a标签下,省时省力,而我们的 / 却是没有用武之地
我们这里就可以利用插件来更充分的学习Xpath语法知识,教程如下,见图即可理解
XPath Helper Chrome插件注意事项
虽然XPath Helper插件使用非常方便,但它也不是万能的,有两个问题:
1.XPath Helper 自动提取的 XPath 都是从根路径开始的,这几乎必然导致 XPath 过长,不利于维护;
2.当提取循环的列表数据时,XPath Helper 是使用的下标来分别提取的列表中的每一条数据,这样并不适合程序批量处理,还是需要人为修改一些类似于*标记等。不过,合理的使用Xpath,还是能帮我们省下很多时间的!
新插件XPath Helper Wizard介绍
为什么我要新介绍一款Xpath语法工具,因为上面那个插件我后面使用的时候出现这个界面,失去验证的效果,所以选择换一个
哈哈哈,直接打脸,我再次打开那个插件已经恢复,不知道昨天是什么情况,不过既然都写到这里,就把那个插件介绍一下
安装非常简单,只要到谷歌扩展程序搜XPath Helper Wizard即可
使用教程非常简单
单击插件
就会跳出
然后我们不需要F12,直接按住shfit选择页面的内容就会自动给我们输入语法