爬虫笔记:xpath和lxml(十二)
XPATH
XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
根据元素的路径找元素。http://www.w3school.com.cn/xpath/index.asp具体介绍可以看这个。
lxml
lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。
lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML
解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。
lxml python 官方文档:http://lxml.de/index.html
需要安装C语言库,可使用 pip 安装:pip install lxml (或通过wheel方式安装)
可以通过lxml来操作网页的xpath,获取到对应的数据或者节点。
from lxml import etree import requests text=requests.get('http://www.baidu.com').text#打开百度,获取到html代码 html=etree.HTML(text)#传一个字符串格式的html html=etree.parse('a.html')#这个parse方法可以传一个文件名,或者一个文件对象,他会自动解析 html.xpath("/tag/a[@href='xxx']")#找到某个节点下面的a标签href属性为xx的,从根节点往下找 html.xpath("//a[@href='xxx']") #//2个/代表不管a标签在哪个节点下面,只要herf为xx的就找到 html.xpath("//div[@class='xxx']//a[@class='cls']") #找到所有div标签class为xx的下面的所有a标签class为cls的 html.xpath("//div[@class='note']//a/@href") #找到div class为note下面的所有a标签,然后取到它的href属性里面的值 html.xpath("//div[contains(@id,'qiushi_tag_')]") #模糊查询,查到id里面包含qiushi_tag的所有元素 # xpath返回的都是一个list,如果你确定只返回一个元素的话,就可以直接取第一个元素 # 如果不确定的话,那就需要循环了 title = html.xpath('//div[@class="title-text c-font-medium c-color-t"]//text()') print(title)
from lxml import etree import requests text=requests.get('http://www.baidu.com').text#打开百度,获取到html代码 html=etree.HTML(text)#传一个字符串格式的html title = html.xpath('//div[@class="title-text c-font-medium c-color-t"]//text()') print(title)