lxml库和BeautifulSoup库常用点小结

算是本人的学习笔记吧,仅供个人学习使用。

以下内容摘自《Python3网络爬虫开发实战--崔庆才著》
1.lxml

XPath 常用规则

表达式 描述
nodename 选取此节点的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

具体阐述:

目的 示例 含义
所有节点 //li 以//开头,表示获取所有li节点
节点选取 //li 获取所有li节点
//li/a 获取所有li节点的所有直接a子节点
//li//a 获取li节点下的所有子孙a节点
//a[@href="link4.html"] 获取href属性为link4.html的a节点
节点选取 //a[@href="link4.html"]/.. 获取href属性为link4.html的a节点的父节点
文本获取 text() 获取节点内部的文本
//li[@class="item-0"]/text() 选取class属性为item-0的li节点的直接子节点内部的文本
//li[@class="item-0"]//text() 选取class属性为item-0的li节点的子孙节点内部的文本
属性获取 @ 获取节点的属性
//li/a/@href 获取所有li节点的直接子节点a的href属性,返回内容可能为"link4.html"
属性多值匹配 contains(classname,classvalue)方法 第一个参数传入属性名称,第二个参数传入属性值
//li[contains(@class,"li")]/a/text() 获取class属性值包含"li"的li节点的直接子节点a内部的文本
多属性匹配 and运算符 根据多个属性确定一个节点
//li[contains(@class,"li") and @name="item"]/a/text() 需要同时根据class和name属性的值来确定li节点

2.BeautifulSoup库的方法选择器
载入库
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,"lxml") #进行BeautifulSoup对象的初始化

  • find_all(name,attrs,recursive,text,**kwargs):查询所有符合条件的元素;find()返回的是第一个匹配的元素
参数 作用 示例
name 根据节点名查询元素 soup.fina_all(name="ul") #查询所有的ul节点
attrs 根据属性查询 soup.find_all(attrs={'id':'list-1'})) #查询id属性值为list-1的节点
text 匹配节点的文本 soup.find_all(text=re.compile('link')) #返回所有匹配正则表达式的节点的文本组成的列表

posted on 2020-09-07 22:36  纵横二剑  阅读(264)  评论(0编辑  收藏  举报