解析-BeautifulSoup
解析-BeautifulSoup
1.基本简介
1.BeautifulSoup简称:bs4
2.什么是Beatifulsoup?Beautifulsoup,和1xm1一样,是一个html的解析器,主要功能也是解析和提取数据
3.优缺点?缺点: 效率没有1xm1的效率高优点: 接口设计人性化,使用方便
创建对象
服务器响应的文件生成对象
soup = Beautifulsoup(response.read().decode(),"1xml')
本地文件生成对象
soup = Beautifulsoup(open( '1.html'),"1xml')
注意: 默认打开文件的编码格式gbk所以需要指定打开编码格式
BeautifulSoup基本使用
from bs4 import BeautifulSoupsoup = BeautifulSoup(open('spider_解析_bs4基本使用.html', encoding='utf-8'), 'lxml')# 根据标签名查找节点,找到的是第一个符合条件的数据
# print(soup.a)
# 获取的属性和属性值
# print(soup.a.attrs)# bs4的一些函数
# find
# 返回的是第一个符合条件的数据
# print(soup.find('a'))# 根据title的值来找到对应的标签对象
# print(soup.find('a', title="a2"))# 根据class的值来找到对应的标签对象 注意的是class需要添加下划线
# print(soup.find('a', class_="a1"))# find_all 返回的是一个列表 并且返回了所有的a标签
# print(soup.find_all('a'))# limit的作用是查找前几个数据
# print(soup.find_all('li', limit=2))# select(推荐使用)
# select方法返回的是一个列表 并且会返回多个数据
# print(soup.select('a'))# 可以通过.代表class 我们把这种操作叫做类选择器
# print(soup.select('.a1'))# print(soup.select('#l1'))# 属性选择器---通过属性来寻找对应的标签
# 查找l1标签中有id的标签
# print(soup.select('li[id]'))# 查找到li标签中id为l2的标签
# print(soup.select('li[id=l2"]'))# 层级选择器
# 后代选择器
# 找到div下面的li
# print(soup.select('div li'))# 子代选择器
# 某标签的第一级子标签
# 注意: 很多计算机编程语言中 如果不加空格就不会输出内容 但是在bs4中不会报错可以显示内容
# print(soup.select(('div > ul > li')))# 找到a标签和li标签的所有的对象
# print(soup.select('a, li'))# 节点信息
# 获取节点内容
# obj = soup.select('#d1')[0]
# 如果标签对象中 只有内容 那么string和get_text()都可以使用
# 如果标签对象中 除了内容还有标签 那么string就获取不到数据 而get_text()是可以获取数据
# 我们一般情况下 推荐使用get text()
# print(obj.string)
# print(obj.get_text())# 节点的属性
obj = soup.select('#p1')[0]
# name是标签的名字
# print(obj.name)
# 将属性值作为一个字典返回
# print(obj.attrs)# 获取节点的属性
print(obj.attrs.get('class'))
print(obj.get('class'))
print(obj['class'])
爬取星巴克菜单网页内容实例
import urllib.request
from bs4 import BeautifulSoupurl = 'https://www.starbucks.com.cn/menu/'request = urllib.request.Request(url)response = urllib.request.urlopen(request)content = response.read().decode('utf-8')soup = BeautifulSoup(content, 'lxml')# //*[@class="grid padded-3 product"]//strong
# //*[@class="grid padded-3 product"]//div/@stylename_list = soup.select('ul[class="grid padded-3 product"] strong')
tu_list = soup.select('ul[class="grid padded-3 product"] div')for i in range(len(name_list)):name = name_list[i].get_text().replace('/', '∕')img_url = tu_list[i].attrs.get('style').split('"')[1].split('"')[0]basic_url = 'https://www.starbucks.com.cn'img = basic_url + img_urlprint(name,img)
相关文章:
解析-BeautifulSoup
解析-BeautifulSoup 1.基本简介 1.BeautifulSoup简称:bs4 2.什么是Beatifulsoup?Beautifulsoup,和1xm1一样,是一个html的解析器,主要功能也是解析和提取数据 3.优缺点?缺点: 效率没有1xm1的效率高优点: 接口设计人性化,使用方…...
C++:数组
C中的数组是一种用于存储相同数据类型的元素的数据结构。以下是C数组的一些特点: 固定大小:数组在创建时需要指定其大小,而且无法在运行时改变大小。这意味着一旦数组被创建,其大小就是固定的,除非创建一个新的数组。 …...

结合Mockjs与Bus事件总线搭建首页导航和左侧菜单
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《ELement》。🎯🎯 …...
模拟桌面自动整理, 先顶左,再顶上。
5 6 **##** ****#* ***##* #***** ***#** ##**** ##**** #***** #***** #***** #include<iostream> using namespace std; #define MAX 1024char a[MAX][MAX]; void H(char arr[][MAX], int n,int idx) {//n列数 ,idx 某行int left 0;int right n - 1;char t;while (…...

新增MariaDB数据库管理、支持多版本MySQL数据库共存,1Panel开源面板v1.6.0发布
2023年9月18日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.6.0版本。 在这个版本中,1Panel新增MariaDB数据库管理;支持多版本MySQL数据库共存;支持定时备份系统快照和应用商店中已安装应用;支持为防火墙…...

【dbeaver】win环境的kerberos认证和Clouders集群中Kerberos认证使用Dbeaver连接Hive和Phoenix
一、下载驱动 cloudera官网 1.1 官网页面下载 下载页面 的Database Drivers 挑选比较新的版本即可。 1.2 集群下载 Hive可能集群没有驱动包。驱动包名称:HiveJDBC42.jar。41结尾的包也可以使用的。注意Jar包的大小一定是十几MB的。几百KB的是thin包不可用。 …...

MongoDB索引
索引支持在MongoDB中高效执行查询。如果没有索引,MongoDB必须扫描集合中的每个文档才能返回查询结果。如果查询存在适当的索引,MongoDB将使用该索引来限制它必须扫描的文档数。 尽管索引提高了查询性能,但添加索引对写入操作的性能有负面影响…...

ChatGPT的问世给哪些行业带来了冲击?
目录 引言Chat GPT 对行业的影响在线客服和智能客服行业传统自动回复机器人的局限性Chat GPT 的提升能力 教育培训行业个性化学习需求的挑战Chat GPT 的个性化优势 金融保险行业客户服务的变革Chat GPT 的智能化应用 医疗健康领域自助诊断及咨询的便利性Chat GPT 在医疗领域的应…...

Elasticsearch:与多个 PDF 聊天 | LangChain Python 应用教程(免费 LLMs 和嵌入)
在本博客中,你将学习创建一个 LangChain 应用程序,以使用 ChatGPT API 和 Huggingface 语言模型与多个 PDF 文件聊天。 如上所示,我们在最最左边摄入 PDF 文件,并它们连成一起,并分为不同的 chunks。我们可以通过使用 …...

docker系列(7) - Dockerfile
文章目录 7. Dockerfile7.1 Dockerfile介绍7.2 指令规则7.3 指令说明7.3.1 RUN命令的两种格式7.3.1 CMD命令覆盖问题7.3.2 ENTRYPOINT命令使用7.3.3 ENV的使用 7.4 构建tomcat Dockerfile案例7.4.1 准备原始文件7.4.2 编写Dockerfile7.4.3 构建镜像7.4.4 验证镜像 7.5 构建jdk基…...

Spring面试题8:面试官:说一说Spring的BeanFactory
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说Spring的BeanFactory Spring的BeanFactory是Spring框架的核心容器,负责管理和创建Bean对象。它是一个工厂类,用于实例化、配置和管理Bean的…...

Win10专业版系统一键重装怎么操作?
Win10专业版系统一键重装怎么操作?与传统的系统重装相比,一键重装不仅省去了繁琐的安装步骤,这一简单操作使得系统维护和恢复变得更加便捷,让用户不再为系统问题而烦恼。下面小编给大家详细介绍关于一键重装Win10专业版系统的操作…...

十大服装店收银系统有哪些 好用的服装收银软件推荐
服装店收银系统对于门店和服装卖场来说非常重要,可以提高工作效率。下面是推荐的十大服装店收银系统,供开设服装店的企业选择合适的收银软件用于经营管理。 1、核货宝收银系统 支持快速收银,同时适用于服装行业,能够支持多规格多…...

算法通过村第八关-树(深度优先)白银笔记|深度和高度问题
文章目录 前言1. 最大深度问题2. 判断平衡树3. 最小深度4. N叉树的最大深度总结 前言 提示:我的整个生命,只是一场为了提升社会地位的低俗斗争。--埃莱娜费兰特《失踪的孩子》 这一关我们看一些比较特别的题目,关于二叉树的深度和高度问题。这…...
Redis安装和使用
这里写目录标题 Redis安装和使用一.数据库类型1.关系型数据库2.非关系型数据库3.区别(1)数据存储方式不同(2)扩展方式不同(3)对事务性的支持不同 二.redis简介1.Redis 优点2.哪些数据适合放入缓存中&#x…...

UML基础与应用之面向对象
UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,它使用图形符号和文本来描述软件系统的结构、行为和交互。在面向对象编程中,UML被广泛应用于软件系统的设计和分析阶段。本文将总结UML基础与应用之面向对象的…...

将 Ordinals 与比特币智能合约集成:第 2 部分
在上一篇文章中,我们展示了一种将 Ordinal 与智能合约集成的方法,即将Ordinal和合约放在同一个 UTXO 中。 今天,我们介绍了一种集成它们的替代方案,即它们位于单独的 UTXO 中。 作为展示,我们开发了一个智能合约&…...
PCL 法线空间采样(C++详细过程版)
法线空间采样 一、概述二、代码实现三、结果展示1、原始点云2、采样结果一、概述 法线空间采样在PCL里有现成的调用函数,具体算法原理和实现代码见:PCL 法线空间采样。为充分了解法线空间采样算法实现的每一个细节和有待改进的地方,使用C++代码对算法实现过程进行复现。 二…...

论文阅读:AugGAN: Cross Domain Adaptation with GAN-based Data Augmentation
Abstract 基于GAN的图像转换方法存在两个缺陷:保留图像目标和保持图像转换前后的一致性,这导致不能用它生成大量不同域的训练数据。论文提出了一种结构感知(Structure-aware)的图像转换网络(image-to-image translation network)。 Proposed Framework…...

CNC 3D浮雕 Aspire 11.55 Crack
Aspire 提供了功能强大且直观的软件解决方案,用于在 CNC 铣床上创建和切割零件。有用于 2D 设计和计算 2D 刀具路径的工具,例如仿形、型腔加工和钻孔以及 2.5D 刀具路径,包括:V 形雕刻、棱镜雕刻、成型刀具路径、凹槽、 倒角刀具路…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门  下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 5.2 IPsec隧道模式(Tunne…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...