40 爬虫 - BeautifulSoup4 CSS选择器
2023-09-11 14:15:43 时间
这就是另一种与 find_all 方法有异曲同工之妙的查找方法.
写 CSS 时,标签名不加任何修饰,类名前加
.
,id名前加#
在这里我们也可以利用类似的方法来筛选元素,用到的方法是
soup.select()
,返回类型是list
(1)通过标签名查找
print soup.select('title')
#[<title>The Dormouse's story</title>]
print soup.select('a')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
print soup.select('b')
#[<b>The Dormouse's story</b>]
(2)通过类名查找
print soup.select('.sister')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
(3)通过 id 名查找
print soup.select('#link1')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]
(4)组合查找
组合查找即和写 class 文件时,标签名与类名、id名进行的组合原理是一样的,例如查找 p 标签中,id 等于 link1的内容,二者需要用空格分开
print soup.select('p #link1')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]
直接子标签查找,则使用 > 分隔
print soup.select("head > title")
#[<title>The Dormouse's story</title>]
(5)属性查找
查找时还可以加入属性元素,属性需要用中括号括起来,注意属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到。
print soup.select('a[class="sister"]')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
print soup.select('a[href="http://example.com/elsie"]')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]
同样,属性仍然可以与上述查找方式组合,不在同一节点的空格隔开,同一节点的不加空格
print soup.select('p a[href="http://example.com/elsie"]')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]
(6) 获取内容
以上的 select 方法返回的结果都是列表形式,可以遍历形式输出,然后用 get_text() 方法来获取它的内容。
soup = BeautifulSoup(html, 'lxml')
print type(soup.select('title'))
print soup.select('title')[0].get_text()
for title in soup.select('title'):
print title.get_text()
相关文章
- 用前考虑清楚,伤敌一千自损八百的字体反爬虫
- CSS - 解决子级用css float浮动 而父级div没高度不能自适应高度
- CSS - 工具类 tool.css
- Python爬虫学习系列教程
- [css]演示:纯CSS实现的右侧底部简洁悬浮效果
- 小白学 Python 爬虫(26):为啥上海二手房你都买不起
- Python爬虫开发:Request的使用(随机User-Agent)
- Atitit.css 规范 bem 项目中 CSS 的组织和管理
- 使用Python进行爬虫的初学者指南,含案例演示
- “百度”、“google”的爬虫请求头信息 user-agent
- 【Python3网络爬虫开发实战】1.2.3-ChromeDriver的安装
- 【Python3网络爬虫开发实战】3.4-抓取猫眼电影排行
- Python爬虫:xpath常用方法示例
- 爬虫日记(5):beautifulsoup的基本使用1
- 爬虫===爬取王者荣耀所有英雄皮肤图片
- 【CSS】css常用复杂选择器都有哪些?看这一篇就够了_07
- 【CSS】css转换、css过渡、css动画_09
- 学习笔记(01):Python爬虫开发-爬虫合法性探究