爬虫笔记: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)

  

猜你喜欢

转载自www.cnblogs.com/wxcx/p/12913710.html