Python BeautifulSoup 常用语句详解

Python BeautifulSoup 常用语句详解

引言

BeautifulSoup 是一个用于解析 HTML 和 XML 文档的 Python 库,特别适合用于网页抓取和数据提取。本文将详细介绍 BeautifulSoup 的常用语句、参数及其示例,帮助读者更好地理解和使用这个强大的工具。

安装 BeautifulSoup

在使用 BeautifulSoup 之前,需要先安装它。你可以使用 pip 来安装:

pip install beautifulsoup4
导入库

首先,导入 BeautifulSoup 库和 requests 库(用于发送 HTTP 请求):

import requests
from bs4 import BeautifulSoup
基本用法
1. 获取网页内容

使用 requests 库发送 HTTP 请求,获取网页内容:

url = 'https://www.example.com'
response = requests.get(url)

if response.status_code == 200:
    html_content = response.text
else:
    print(f"请求失败,状态码:{response.status_code}")
2. 解析 HTML 内容

使用 BeautifulSoup 解析获取到的 HTML 内容:

soup = BeautifulSoup(html_content, 'html.parser')
常用方法和属性
1. find 和 find_all
  • find:查找第一个匹配的元素。
  • find_all:查找所有匹配的元素。

示例

# 查找第一个 `<title>` 标签
title = soup.find('title')
print(f"页面标题:{title.text}")

# 查找所有的 `<a>` 标签
links = soup.find_all('a')
for link in links:
    print(f"链接:{link.get('href')}, 文本:{link.text}")
2. select

使用 CSS 选择器查找元素。

示例

# 查找所有的 `<div>` 标签
divs = soup.select('div')
for div in divs:
    print(f"div 内容:{div.text}")

# 查找带有 `class="example"` 的 `<div>` 标签
example_divs = soup.select('div.example')
for example_div in example_divs:
    print(f"带有 class='example' 的 div 内容:{example_div.text}")
3. get 和 attrs
  • get:获取指定属性的值。
  • attrs:获取所有属性及其值。

示例

# 获取第一个 `<a>` 标签的 `href` 属性
first_link = soup.find('a')
print(f"第一个链接的 href 属性:{first_link.get('href')}")

# 获取第一个 `<a>` 标签的所有属性
print(f"第一个链接的所有属性:{first_link.attrs}")
4. text 和 string
  • text:获取元素的文本内容。
  • string:获取元素的文本内容(如果只有一个子节点)。

示例

# 获取第一个 `<title>` 标签的文本内容
title = soup.find('title')
print(f"页面标题:{title.text}")

# 获取第一个 `<p>` 标签的文本内容
paragraph = soup.find('p')
print(f"第一个段落的内容:{paragraph.string}")
5. parent 和 children
  • parent:获取元素的父节点。
  • children:获取元素的所有子节点。

示例

# 获取第一个 `<a>` 标签的父节点
first_link = soup.find('a')
print(f"第一个链接的父节点:{first_link.parent}")

# 获取第一个 `<div>` 标签的所有子节点
first_div = soup.find('div')
for child in first_div.children:
    print(f"子节点:{child}")
6. next_sibling 和 previous_sibling
  • next_sibling:获取元素的下一个兄弟节点。
  • previous_sibling:获取元素的上一个兄弟节点。

示例

# 获取第一个 `<p>` 标签的下一个兄弟节点
first_paragraph = soup.find('p')
print(f"第一个段落的下一个兄弟节点:{first_paragraph.next_sibling}")

# 获取第一个 `<p>` 标签的上一个兄弟节点
print(f"第一个段落的上一个兄弟节点:{first_paragraph.previous_sibling}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/921871.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据指标与标签在数据分析中的关系与应用

导读&#xff1a;分享数据指标体系的文章很多&#xff0c;但讲数据标签的文章很少。实际上&#xff0c;标签和指标一样&#xff0c;是数据分析的左膀右臂&#xff0c;两者同样重要。实际上&#xff0c;很多人分析不深入&#xff0c;就是因为缺少对标签的应用。今天系统的讲解下…

Flutter-Web首次加载时添加动画

前言 现在web上线后首次加载会很慢&#xff0c;要5秒以上&#xff0c;并且在加载的过程中界面是白屏。因此想在白屏的时候放一个加载动画 实现步骤 1.找到web/index.html文件 2.添加以下<style>标签内容到<head>标签中 <style>.loading {display: flex;…

51单片机基础 06 串口通信与串口中断

目录 一、串口通信 二、串口协议 三、原理图 四、串口通信配置参数 1、常用的串行口工作方式1 2、数据发送 3、数据接收 4、波特率计算 5、轮询接收 6、中断接收 一、串口通信 串口通信是一种常见的数据传输方式&#xff0c;广泛用于计算机与外部设备或嵌入式系统之间…

【深度学习之回归预测篇】 深度极限学习机DELM多特征回归拟合预测(Matlab源代码)

深度极限学习机 (DELM) 作为一种新型的深度学习算法&#xff0c;凭借其独特的结构和训练方式&#xff0c;在诸多领域展现出优异的性能。本文将重点探讨DELM在多输入单输出 (MISO) 场景下的应用&#xff0c;深入分析其算法原理、性能特点以及未来发展前景。 1、 DELM算法原理及其…

动态规划子数组系列一>最长湍流子数组

1.题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int maxTurbulenceSize(int[] arr) {int n arr.length;int[] f new int[n];int[] g new int[n];for(int i 0; i < n; i)f[i] g[i] 1;int ret 1;for(int i 1; i < n-1; i,m. l.kmddsfsdafsd){int…

RabbitMQ3:Java客户端快速入门

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

【mongodb】社区版8:改变配置bindip和授权

更改配置 sudo systemctl restart mongod (base) root@k8s-master-pfsrv:/home/zhangbin# sudo tail -n 20 /var/log/mongodb/mongod.log 日志感觉是成功了:{"t":{"$date":"2024-11-19T19:57:47.076+08:00"

element dialog 2层弹窗数据同步问题

注意&#xff1a;本帖为公开技术贴&#xff0c;不得用做任何商业用途 element dialog 2层弹窗数据同步问题 如果嵌套dialog&#xff0c;也就是多层dialog嵌套 2个input&#xff0c;key用同样的值 会导致内外2层dialog&#xff0c;用相同key值的input会数据同步 原因如下&a…

C# 属性 学习理解记录

字段和属性 左边字段&#xff0c;右边属性 拓展&#xff0c;属性安全&#xff1a; 1、设置public private 和protected 等&#xff0c;只读&#xff0c;只写&#xff0c; 2、在get set 方法时&#xff0c;验证&#xff0c;异常时抛出错误

如何提取某站 MV 视频中的音乐为 MP3 音频

我们常常会遇到需要将视频中的音频提取出来并转换为 MP3 格式的情况&#xff0c;比如想要单独保存一段视频中的精彩音乐、演讲或旁白。简鹿视频格式转换器就是一款能够轻松实现这一需求的实用软件&#xff0c;它支持 Windows 和 Mac 系统&#xff0c;为不同操作系统的用户提供了…

SQLynx让数据库变得简单!

SQLynx让数据库管理和开发变得更简单&#xff0c;SQLynx是一款旨在简化飞客使用体验的创新型工具&#xff0c;它为数据库管理者、数据库分析师和开发人员提供了一个直观、易用、高效的平台&#xff0c;首先&#xff0c;SQLynx拥有直观友好的用户界面。无论您是新建还是导表&…

stm32f10x_tim.h(函数学习自用)

stm32f10x_tim.h 函数库 void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); //时基单元配置void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDe…

Centos Stream 9安装Jenkins-2.485 构建自动化项目步骤

官网&#xff1a;https://www.jenkins.io/ 1 下载 环境准备&#xff1a; 版本支持查询&#xff1a;https://pkg.jenkins.io/redhat-stable/ 安装JDK17&#xff1a;https://blog.csdn.net/qq_44870331/article/details/140784297 yum -y install epel-release wget upgradew…

ubuntu修改成静态ip

先用ifconfg查询网卡名称 例如以下的是enp10s0 enp10s0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.100.159 netmask 255.255.255.0 broadcast 192.168.100.255inet6 fe80::127c:61ff:fe4c:ab6b prefixlen 64 scopeid 0x20<link>ether…

Canvas 前端艺术家

目前各种数据来看&#xff0c;前端未来在 数据可视化 和 AI 这两个领域会比较香&#xff0c;而 Canvas 是 数据可视化 在前端方面的基础技术。所以给大家唠唠Canvas这个魔幻工具。 Canvas 介绍 Canvas 中文名叫 “画布”&#xff0c;是 HTML5 新增的一个标签。Canvas 允许开发…

WEB攻防-通用漏洞文件上传二次渲染.htaccess变异免杀

知识点&#xff1a; 1、文件上传-二次渲染 2、文件上传-简单免杀变异 3、文件上传-.htaccess妙用 4、文件上传-PHP语言特性 1、上传后门时&#xff0c;文件内容带.就不行 这时可以上传一个转换后的ip地址&#xff0c;ip地址对应网站包含后门代码 转换后的int会在访问的时候…

Linux驱动开发(9):pinctrl子系统和gpio子系统--led实验

在前面章节&#xff0c;我们有过使用寄存器去编写字符设备的经历了。这种直接在驱动代码中&#xff0c; 通过寄存器映射来对外设进行使用的编程方式&#xff0c;从驱动开发者的角度可以说是灾难。 因为每当芯片的寄存器发生了改动&#xff0c;那么底层的驱动几乎得重写。 那么…

Element-Ui组件(icon组件)

一、前言 本篇文章主要是对官网的Icon组件进行总结归纳Icon 图标 | Element Plus 在现代Web应用开发中&#xff0c;图标是用户界面设计中不可或缺的一部分。它们不仅提升了用户体验&#xff0c;还使得信息的传达更加直观和高效。本文主要对Element Plus 官方提供的Icon组件进行…

Echarts+VUE饼图的使用(基础使用、多个饼图功能、单组饼图对应颜色使用)

安装&#xff1a;npm install echarts --save 配置:main.js // 引入echarts import * as echarts from echarts Vue.prototype.$echarts echarts一、基础饼图&#xff08;直接拷贝就能出效果&#xff09; <div class"big-box" ref"demoEhart"><…

文件管理 II(文件的物理结构、存储空间管理)

一、文件的物理结构 文件实际上是一种抽象数据类型&#xff0c;我们要研究它的逻辑结构、物理结构&#xff0c;以及关于它的一系列操作。文件的物理结构就是研究文件的实现&#xff0c;即文件数据在物理存储设备上是如何分布和组织的。同一个问题有两个方面的回答&#xff1a;…