Python 爬虫 · bs4 模块基础

Python 学习第 31 天(^-)db(-^)

接上一篇讲解了 HTML 的结构与语法之后,我们就可以开始用 Python 编程语言去抓取 HTML 和 XML 中我们想要的内容。对于这个方向,Python 中有具体的模块方便我们处理。

一、bs4 模块介绍

BeautifuSoup4(简称 bs4)是一个强大的 Python 库,用于解析 HTML 和 XML 文档,能够快速获取网页中的数据。

二、bs4 模块安装

在代码框中输入以下代码:

复制代码
pip install bs4

系统下载需要一点时间(注意要在联网状态下进行),当运行结果中出现以下文字,说明 bs4 模块安装成功:

注意:- 0.0.2 是版本号,随着更新,可能不一样。

三、bs4 模块使用

以以下 HTML 文档内容为例:

复制代码
html = """
<ul>
    <li>大脑在放电</li>
    <li id = "NO.1">1111111</li>
    <li>哈哈哈哈哈</li>
    <li class = "Music">《去北极忘记你》</li>
    <li class = "Movie">《解忧杂货铺》</li>
    <li class = "Music">《我会找到你》</li>
    <li class = "Music">《来自天堂的魔鬼》</li>
    <li class = "Movie">《送我上青云》</li>
    <li class = "animation"><a href = "https://baike.baidu.com/item/%e5%b0%8f%e7%8c%aa%e4%bd%a9%e5%a5%87/12343674">小猪佩奇</a></li>
    <li><a href = "https://pythonlang.cn/">Python</a></li>
</ul>
"""

1. 模块导入

复制代码
from bs4 import BeautifulSoup

2. 初始化对象

格式:变量名 = BeautifulSoup(html, "html.parser")

复制代码
a = BeautifulSoup(html, "html.parser")

3. 常用查找

(1) 查找一个,只会返回找到的第一条内容(按 "标签" 查找)

格式:变量名.find("标签名", attr = {"用于筛选的属性名1":"属性值1", "用于筛选的属性值2":"属性值2", ......})

代码示例1:

复制代码
a.find("li")

运行结果1:<li>大脑在放电</li>

代码示例2:

复制代码
a.find("li", attrs = {"id":"NO.1"})

运行结果2:<li id="NO.1">1111111</li>

代码示例3:

复制代码
li = a.find("li", attrs = {"class":"animation"})
link_1 = li.find("a")
print(link_1)
print(link_1.text)
print(link_1.get("href"))

运行结果3:

(2) 查找多个,返回符合条件的所有内容(按 "标签" 查找)

格式:变量名.find_all("标签名", attr = {"用于筛选的属性名1":"属性值1", "用于筛选的属性值2":"属性值2", ......})

代码示例1:

复制代码
a.find_all("li")

运行结果1:

代码示例2:

复制代码
a.find_all("li", attrs = {"class":"Music"})

运行结果2:

代码示例3:

复制代码
li_list = a.find_all("a")
for li in li_list:
    print(f"{li.text}:{li.get("href")}")

运行结果3:

相关推荐
5233AI开发笔记28 分钟前
API 返回 429:先区分限速、并发和配额,再决定是否重试
python
Dovis(誓平步青云)29 分钟前
启元 T1 Pro 人机相声搭档:语音-触摸双通道的启元机器人节奏引擎设计
开发语言·前端·javascript·microsoft·交互
databook29 分钟前
经常听到的透视表是干什么的?
python·数据分析·pandas
做科研的周师兄31 分钟前
【R语言实战】MixSIAR 氢氧同位素水源解析全流程:从混合空间校验到贝叶斯 MCMC 收敛诊断(后附完整代码)
java·大数据·开发语言
特立独行的猫A1 小时前
我用仓颉写了个多平台发文工具:一份 Markdown,一条命令发六个平台
java·后端·python
陆陆陆六1 小时前
# 五个AI引擎的答案采集:反爬、去重与时间窗对齐的三个工程细节
python·net·ai答案采集
.痞老板.2 小时前
java ee--计算机是如何工作的
java·开发语言·java-ee
奇树谦2 小时前
Qt Quick 图片加载与 GPU 纹理机制详解:QImage、QQuickTextureFactory、QSGTexture 与异步加载
开发语言·qt·系统架构
青梅味猪大肠2 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
严肃小白兔3 小时前
Cloudflare 开始区分 AI 爬虫与个人 Agent:网站访问控制应该怎样设计?
人工智能·爬虫