Python爬虫入坑笔记 - XPath快速定位网页内容

2016-12-31  本文已影响12450人  0X0E01

XPATH语句可以用来快速定位一个XML文本中的内容,当然也可以是HTML文本,这里我们使用lxml库来解析,达到快速批量获取网页相似内容的功能

安装

$ pip install lxml

基本使用

假设匹配出网页所含所有图片的链接

from lxml import etree
import requests

html = requests.get('http://www.lzu.edu.cn').content.decode('utf-8')
##获取网页代码

dom_tree = etree.HTML(html)

###XPath匹配
links = doc_tree.xpath('//img/@src')

for i in links:
    print(i)

##将会输出网页中所有图片标签的链接

XPath语法讲解

我们假设有如下网页

<html>
    <head>
        <title>这是标题</title>
    </head>
    <body>
        <div class="cn_search_engine">
            <a href="http://www.baidu.com">百度</a>
        </div>
        <div class="other_search_engine">
            <a href="http://www.bing.com">Bing</a>
            <a href="http://www.google.com">Google</a>
        </div>
    </body>
</html>

如上,HTML标签是一个树形结构,我们称这个为DOM树,xpath匹配出其中的元素,相当于在树中查找子节点啊,因此效率相对正则表达式要高

如同样是解析上述数据中的所有的链接,下面两语句等价

....
##省略若干代码,dom_tree为我们解析之后的etree对象

##语句一:
dom_tree.xpath('/html/body/div/a/@href')

##语句二:
dom_tree.xpath('//div/a/@href')
dom_tree.xpath('//div/a/@href')
#将返回所有的链接网址

dom_tree.xpath('//div/a/text()')
#将获取所有链接的名称


上一篇 下一篇

猜你喜欢

热点阅读