学做莱网站,国家备案查询,国外logo设计网站推荐,域名还没备案可以做网站吗前言一、安装#xff1f;二、使用步骤1.基本使用**【2】谓语#xff08;Predicates#xff09;**案例 前言
xpath在Python的爬虫学习中#xff0c;起着举足轻重的地位#xff0c;对比正则表达式 re两者可以完成同样的工作#xff0c;实现的功能也差不多#xff0c;但xp… 前言一、安装二、使用步骤1.基本使用**【2】谓语Predicates**案例 前言
xpath在Python的爬虫学习中起着举足轻重的地位对比正则表达式 re两者可以完成同样的工作实现的功能也差不多但xpath明显比re具有优势在网页分析上使re退居二线。 提示以下是本篇文章正文内容下面案例可供参考
一、安装
pip install lxml二、使用步骤
1.基本使用
from lxml import etree
selectoretree.HTML(源码) #将源码转化为能被XPath匹配的格式
selector.xpath(表达式) #返回为一列表表达式描述实例解析/从根节点选取/body/div[1]选取根结点下的body下的第一个div标签//从匹配选择的当前节点选择文档中的节点而不考虑它们的位置//a选取文档中所有的a标签./当前节点再次进行xpath./a选取当前节点下的所有a标签选取属性//calss选取所有的class属性
【2】谓语Predicates
谓语用来查找某个特定的节点或者包含某个指定的值的节点。
谓语被嵌在方括号中。
在下面的表格中我们列出了带有谓语的一些路径表达式以及表达式的结果
路径表达式结果/ul/li[1]选取属于 ul子元素的第一个 li元素。/ul/li[last()]选取属于 ul子元素的最后一个 li元素。/ul/li[last()-1]选取属于 ul子元素的倒数第二个 li元素。//ul/li[position()❤️]选取最前面的两个属于 ul元素的子元素的 li元素。//a[title]选取所有拥有名为 title的属性的 a元素。//a[title‘xx’]选取所有 a元素且这些元素拥有值为 xx的 title属性。//a[title10] !选取 a元素的所有 title元素且其中的 title元素的值须大于 10。/body/div[price35.00]选取body下price元素值大于35的div节点
实例
在下面的表格中我们列出了一些路径表达式以及这些表达式的结果
路径表达式结果/ul/*选取 bookstore 元素的所有子元素。//*选取文档中的所有元素。//title[*]选取所有带有属性的 title 元素。//node()获取所有节点
路径表达式结果//book/title | //book/price选取 book 元素的所有 title 和 price 元素。//title | //price选取文档中的所有 title 和 price 元素。/bookstore/book/title | //price选取属于 bookstore 元素的 book 元素的所有 title 元素以及文档中所有的 price 元素。 模糊查询 //div[contains(id, he)] # 查询所有id属性中包含he的div标签
//div[starts-with(id, he)] # 查询所有id属性中包以he开头的div标签
//div/h1/text() # 查找所有div标签下的直接子节点h1的内容
//div/a/href # 获取a里面的href属性值
//* #获取所有
//*[classxx] #获取所有class为xx的标签# 获取节点内容转换成字符串
c tree.xpath(//li/a)[0]
resultetree.tostring(c, encodingutf-8)
print(result.decode(UTF-8))案例
豆瓣Top250基于xpath解析
import requests
from lxml import etreeurl https://movie.douban.com/top250?start0
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36
}
resp requests.get(url, headersheaders)tree etree.HTML(resp.text) # 加载页面源代码items tree.xpath(//li/div[classitem]/div[classinfo])for item in items:title item.xpath(./div[classhd]/a/span[1]/text())[0]rating_num item.xpath(./div[classbd]/div[classstar]/span[classrating_num]/text())[0]comment_num item.xpath(./div[classbd]/div[classstar]/span[4]/text())[0]print(title, rating_num, comment_num)