Scrapy爬虫框架学习之XPath

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GW_wg/article/details/85759202

一,什么是XPath

XPath即XML路径语言(XML Path Language),是一种查询语言,能在XML的树状结构中寻找到你要的节点,并使用XPath的特殊语法提取节点中的数据。是获取网页中数据的一个利器。(HTML也是一种xml)通俗的讲,XPath是一种按照“地址” 找 “人”的语言


二,如何使用XPath

关于XPath的语法的表达式元素请参照我的上一篇文章
XPath语法元素表格


要想使用XPath,你得安装Scrapy模块,要想安装Scrapy,你的安装lxml等一系列第三方库,比较繁琐,而且传统的pip方式安装,容易出现不兼容或者其他令人DT的错误,这里笔者推荐使用Anaconda(又一NB大杀器),Anaconda(蟒蛇)没错,和Python的中文翻译一样都是蟒蛇。Anaconda是一个Python的开源发行版本,包含Python和conda等180多个科学包和依赖项。是一个最省心的第三方库管理平台。

这里引用【拉斯特night】博主的一段博文:

Anaconda是Python的一个开源发行版本,主要面向科学计算。我们可以简单理解为,Anaconda是一个预装了很多我们用的到或用不到的第三方库的Python。而且相比于大家熟悉的pip install命令,Anaconda中增加了conda install命令。当你熟悉了Anaconda以后会发现,conda install会比pip install更方便一些。比如大家经常烦恼的lxml包的问题,在Windows下pip是无法顺利安装的,而conda命令则可以。

具体的下载按章教程请读者自行搜索。

!!!划重点了

XPath语句格式

作用 格式
获取文本 //标签 1[@属性=“属性值”]/标签2[@属性=“属性值”]/…/text()
获取属性值 //标签 1[@属性=“属性值”]/标签2[@属性=“属性值”]/…/@属性
text='''
    <ul>
        <li>Python 学习手册<b>价格:99.00元</b></li>
        <li>Python 核心编程<b>价格:88.00元</b></li>
        <li>Python 基础教程<b>价格:80.00元</b></li>
    </ul>
'''
selector=Selector(text=text)
data=selector.xpath('.//li/b/text()')
print(data)
print(data.extract()) #从data中摘取数据
#使用正则表达式匹配数据
print(selector.xpath('.//li/b/text()').re('\d+\d.\d+'))

运行结果如下:

[<Selector xpath='.//li/b/text()' data='价格:99.00元'>, 
<Selector xpath='.//li/b/text()' data='价格:88.00元'>, 
<Selector xpath='.//li/b/text()' data='价格:80.00元'>]

['价格:99.00元', '价格:88.00元', '价格:80.00元']

['99.00', '88.00', '80.00']

使用正则表达式也可以匹配得到自己想要的数据,但是比较苦逼的是还需要字构造正则表达式,哪怕就是错了一个标点符号,照样是匹配不出来。还是XPath比较强大。当然正则表达式也有它的优点,具体运用还是要具体问题具体分析。


三,使用Chrome浏览器辅助构造XPath

使用XPath之前,需要观察网页源码的文档结构,找到自己想要的节点数据,然后编写对用的“地址”让XPath去“找人”。

找地址有个原则:倒着找地址!
就是说,从要提取的标签开始向上找,直到找到一个标志性的标签为止,什么是标志性的标签,就是够“独特”够独一无二。


其实就算是这样,也有可能 “写错地址找错人”。上面讲的方法是基于自己水灵灵的大眼镜来看的,要是碰到网页源码特混乱的那种,估计看起来是挺费劲的。

笔者推荐借助Chrome浏览器的开发者模式来辅助构造XPath

找到网页——>F12进入开发者模式——>找到目的标签——>选中右键——>Copy——>Copy XPath
然后你就得到了一个供你参考的XPath语句了。


That`s all.

猜你喜欢

转载自blog.csdn.net/GW_wg/article/details/85759202