python——bs4解析网页数据

news/2024/11/29 13:29:04/

简介

        bs4(Beautifulsoup)是html的解析器,主要的功能是解析和提取数据。

        缺点是:效率不是很高。优点是:接口设计人性化,使用方便。

安装以及创建

        1. 安装

                pip install bs4

        2. 导入

                from bs4 import BeautifulSoup

        3. 创建对象

        服务器响应文件生成对象:

                soup = BeautifulSoup(response.read().decode(), 'lxml')

                'lxml'是python第三方库,一个解析器,用于解析HTML代码。

        本地文件生成对象:

                soup = BeautifulSoup(open('1.html'), 'lxml')

                注意:默认打开方式的编码格式为gbk,所以需要指定打开编码格式。

节点定位

  • 根据签名查找节点

        soup.a 只能找到匹配的第一个数据

        soup.a.attrs 找到第一个符合标签数据的属性和属性值

  • 函数

1. find:

2. find_all:

3. select:

 节点信息

        获取节点内容

        obj.string

        obj.get_text()

        获取节点的属性

 爬取星巴克数据

        进入星巴克官网/菜单,F12获取到网页链接。查看网页源码,查看菜单数据所在标签。是在属性值为class="grid padded-3 product"的ul标签下的strong标签里。

import requests#星巴克菜单地址
url = 'https://www.starbucks.com.cn/menu/'
#获得星巴克菜单源码
req = requests.get(url = url)
content = req.textfrom bs4 import BeautifulSoup
#解析菜单数据
soup = BeautifulSoup(content, 'lxml')
name_list = soup.select("ul[class=\"grid padded-3 product\"] strong")for name in name_list:print(name.get_text())


http://www.ppmy.cn/news/1185708.html

相关文章

SAP软件如何查询销售订单的删除记录 <转载>

原文链接:https://mp.weixin.qq.com/s/SFC5enOcH1tizeU8N3JHXQ SAP软件中销售订单如果被删除是不能通过VA02和VA3或VA05查询的‍‍到相关记录的,系统会报错(如图) 销售订单不像某些凭证(比如采购订单,采购…

【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析

一,前期准备环境和工具 1,vmware 16.0安装 若已安装,请忽略 【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客文章浏览阅读186次,点赞9次,收藏2次。【网络安全 --- 工…

MySql数据库问题

1、MySQL 连接出现 Authentication plugin ‘caching_sha2_password‘ cannot be loaded 翻译:MySQL 连接出现 无法加载身份验证插件“caching_sha2_password” ————————————————————————————————————————— 原因分析…

python笔记(函数参数、面向对象、装饰器、高级函数、捕获异常)

Python 笔记 函数参数 默认参数 在Python中,我们可以为函数的参数设置默认值。如果调用函数时没有传递参数,那么参数将使用默认值。 def greet(nameWorld):print(f"Hello, {name}!")greet() # 输出:Hello, World! greet…

Go 中的 OOP- 用结构体代替类

Go是面向对象的吗? Go 不是一种纯粹的面向对象编程语言。这段摘录自 Go 的常见问题解答,回答了 Go 是否是面向对象的问题。 是也不是。虽然Go有类型和方法,并且允许面向对象的编程风格,但是没有类型层次结构。Go中的“接口”概念…

HTML+CSS+JS实现计算器

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…

redis6.0源码分析:跳表skiplist

文章目录 前言什么是跳表跳表(redis实现)的空间复杂度相关定义 跳表(redis实现)相关操作创建跳表插入节点查找节点删除节点 前言 太长不看版 跳跃表是有序集合zset的底层实现之一, 除此之外它在 Redis 中没有其他应用。…

Elasticsearch:标量量化 101 - scalar quantization 101

作者:BENJAMIN TRENT 什么是标量量化以及它是如何工作的? 大多数嵌入模型输出 float32 向量值。 虽然这提供了最高的保真度,但考虑到向量中实际重要的信息,这是浪费的。 在给定的数据集中,嵌入永远不需要每个单独维度…