当前位置: 首页 > news >正文

【Python网络爬虫笔记】8- (BeautifulSoup)抓取电影天堂2024年最新电影,并保存所有电影名称和链接

目录

  • 一. BeautifulSoup的作用
  • 二. 核心方法介绍
    • 2.1 构造函数
    • 2.2 find()方法
    • 2.3 find_all()方法
    • 2.4 select()方法
  • 三. 网络爬虫中使用BeautifulSoup
  • 四、案例爬取结果

一. BeautifulSoup的作用

  • 解析HTML/XML文档:它可以将复杂的HTML或XML文本转换为易于操作的树形结构。例如,将一个网页的HTML内容解析后,就可以像在文件系统中遍历文件夹和文件一样,在这个树形结构中查找特定的标签、属性和文本内容。
  • 数据提取:能够方便地从解析后的文档中提取所需的数据。比如,从新闻网站中提取文章标题、内容、发布时间,或者从电商网站提取商品名称、价格、评论等信息。
  • 清理和转换数据:在一定程度上可以对提取的数据进行清理和转换。例如,去除HTML标签只保留纯文本内容,或者修改标签的属性等。

二. 核心方法介绍

2.1 构造函数

 - **语法**:`BeautifulSoup(html_doc, 'parser')`- **作用**:创建一个BeautifulSoup对象,其中`html_doc`是要解析的HTML或XML文档(可以是字符串形式的网页内容),`parser`是解析器类型,常用的有`html.parser`(Python内置解析器)、`lxml`(需要安装`lxml`库,解析速度快且功能强大)和`html5lib`(对HTML5的支持较好)。例如:```pythonfrom bs4 import BeautifulSoupimport requestsurl = "https://www.example.com"response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')```

2.2 find()方法

 - **语法**:`find(name, attrs, recursive, string, **kwargs)`- **作用**:在解析后的文档树中查找并返回第一个符合条件的标签。- **参数说明**:- `name`:标签名称,如`'div'`、`'a'`等。例如,`soup.find('div')`会返回文档中第一个`<div>`标签。- `attrs`:一个字典,用于指定标签的属性。例如,`soup.find('a', attrs={'class': 'link'})`会返回第一个`class`属性为`link`的`<a>`标签。- `recursive`:一个布尔值,默认为`True`,表示是否在整个文档树中递归查找。如果设为`False`,则只在文档树的直接子元素中查找。- `string`:用于匹配标签中的文本内容。例如,`soup.find('p', string='This is a paragraph')`会返回包含文本`This is a paragraph`的第一个`<p>`标签。

2.3 find_all()方法

 - **语法**:`find_all(name, attrs, recursive, string, limit, **kwargs)`- **作用**:返回文档树中所有符合条件的标签列表。- **参数说明**:参数含义与`find`方法类似,多了一个`limit`参数,用于限制返回结果的数量。例如,`soup.find_all('a', limit = 3)`会返回文档中前3个`<a>`标签。

2.4 select()方法

 - **语法**:`select(selector)`- **作用**:使用CSS选择器语法在文档树中查找元素。这是一种非常强大的查找方式,能够方便地定位到复杂结构中的元素。例如,`soup.select('div.class a')`会返回所有在`class`属性的父`<div>`标签下的`<a>`标签。

三. 网络爬虫中使用BeautifulSoup

  • 案例:抓取电影天堂2024年最新电影,并保存所有电影名称和链接
    • 电影网址:https://dytt89.com/

    • 需要抓取的内容
      在这里插入图片描述

    • 功能实现
      -1.安装BeautifulSoup库

      使用pip命令安装beautifulsoup4库。在命令行中输入pip install beautifulsoup4

      -2.导入模块
      在Python代码中,需要从bs4包中导入BeautifulSoup类。同时,如果是从网页获取数据,通常还需要导入requests库来发送HTTP请求。
      -3.代码实现

# 抓取2024年最新电影链接,并保存所有电影信息和链接# 导入requests
import requests# 导入 BeautifulSoup
from bs4 import BeautifulSoup
# 导入re
import re# 头部
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
}# 获取网页内容
url = 'https://dytt89.com/'res = requests.get(url, headers=headers, verify=False)
# 指定字符集
res.encoding = 'gb2312'# 获取网页内容
html_text = res.text# 创建BeautifulSoup对象
soup = BeautifulSoup(html_text, 'html.parser')# 找到2024新片精品的板块
new_movies_section = soup.find('div', class_='co_area2').find('div', class_='title_all').find('a', href=True, text='2024新片精品')if new_movies_section:movie_list = new_movies_section.find_next('div', class_='co_content222').find_all('li')for movie in movie_list:movie_name = movie.find('a').textmovie_link = url+movie.find('a')['href'].strip("/")print(f"电影名称: {movie_name}")print(f"电影链接: {movie_link}")# 关闭响应
res.close()

四、案例爬取结果

注意:原电影链接如下,此处做了一个拼接。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

【Python网络爬虫笔记】8- (BeautifulSoup)抓取电影天堂2024年最新电影,并保存所有电影名称和链接

目录 一. BeautifulSoup的作用二. 核心方法介绍2.1 构造函数2.2 find()方法2.3 find_all()方法2.4 select()方法 三. 网络爬虫中使用BeautifulSoup四、案例爬取结果 一. BeautifulSoup的作用 解析HTML/XML文档&#xff1a;它可以将复杂的HTML或XML文本转换为易于操作的树形结构…...

Rancher V2.7.0安装教程

1、执行Docker命令 docker run -d --privileged --restartunless-stopped -p 80:80 -p 443:443 -v /home/rancher:/var/lib/rancher --name rancher registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.7.0 注&#xff1a;如果容器启动失败&#xff0c;参考我另外一篇文章…...

STM32MX 配置CANFD收发通讯

一、环境 MCU&#xff1a;STM32G0B1CEU6 CAN收发器&#xff1a;JIA1042 二、MX配置 配置SYS 配置canfd并开启中断&#xff0c;我开了两个FDCAN&#xff0c;配置是一样的&#xff0c;这里贴一下波特率的计算公式&#xff1a; 也就是&#xff1a;CAN时钟频率/预分频器/&…...

(12)时间序列预测之MICN(CNN)

文章目录 前言1. challenge 一、网络结构1. MHDecomp2. Trend-cyclical Prediction Block3. Seasonal Prediction BlockMIC LayerMerge 实验结果1.长时预测 总结参考 文章信息 模型&#xff1a; MICN (Multi-scale Isometric Convolution Network)关键词&#xff1a; 长时预测…...

嵌入式蓝桥杯学习3 外部中断实现按键

Cubemx配置 前面的配置依旧一样。 原文链接&#xff1a;https://blog.csdn.net/m0_74246768/article/details/144227188 1.打开cubemx&#xff0c;将PB0到PB1配置为GPIO_EXTI模式。 2.在System-Core中点击GPIO&#xff0c;选择PB0到PB2&#xff0c; GPIO_Mode&#xff08;触…...

自由学习记录(29)

FileStream FileStream 是 .NET 中用于文件操作的重要类&#xff0c;位于 System.IO 命名空间中。它提供了对文件的同步和异步读写操作。以下是它的方法签名和重载的详细介绍&#xff1a; 构造函数签名和重载 FileStream 提供多个构造函数&#xff0c;允许在创建实例时指定文…...

使用YOLO系列txt目标检测标签的滑窗切割:批量处理图像和标签的实用工具

使用YOLO系列txt目标检测标签的滑窗切割&#xff1a;批量处理图像和标签的实用工具 使用YOLO的TXT目标检测标签的滑窗切割&#xff1a;批量处理图像和标签的实用工具背景1. 代码概述2. 滑窗切割算法原理滑窗切割步骤&#xff1a;示例&#xff1a; 3. **代码实现**1. **加载标签…...

架构10-可观测性

零、文章目录 架构10-可观测性 1、可观测性 &#xff08;1&#xff09;可观测性的背景 **历史沿革&#xff1a;**可观测性最初由匈牙利数学家鲁道夫卡尔曼提出&#xff0c;用于线性动态控制系统。后来&#xff0c;该概念被引入到计算机科学中。**现代意义&#xff1a;**在分…...

git管理Unity项目的正确方式

git管理Unity项目的正确打开方式 前言&#xff1a;对于刚开始git进行unity项目管理的时候&#xff0c;我采取的方式是全部文件上传&#xff0c;文件数量太多以及上传太大&#xff0c;我尝试过一下几个方法&#xff1a; 利用git的LFS大文件进行传方式&#xff0c;可行但比较麻…...

openssl使用哈希算法生成随机密钥

文章目录 一、openssl中随机数函数**OpenSSL 随机数函数概览**1. **核心随机数函数** **常用函数详解**1. RAND_bytes2. RAND_priv_bytes3. RAND_seed 和 RAND_add4. RAND_status **随机数生成器的熵池****常见用例****注意事项** 二、使用哈希算法生成随机的密钥 一、openssl中…...

将word里自带公式编辑器编辑的公式转换成用mathtype编辑的格式

文章目录 将word里自带公式编辑器编辑的公式转换成用mathtype编辑的格式MathType安装问题MathType30天试用延期MathPage.wll文件找不到问题 将word里自带公式编辑器编辑的公式转换成用mathtype编辑的格式 word自带公式编辑器编辑的公式格式&#xff1a; MathType编辑的格式&a…...

校园失物招领系统基于 SpringBoot:点亮校园归还遗失物之光

2系统开发环境 2.1vue技术 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第…...

dhcpd服务器的配置与管理(超详细!!!)

前提条件&#xff1a; &#xff08;1&#xff09;虚拟机能够联网&#xff08;如果nat模式不能联网的看另一期&#xff09; CentOS7 NAT模式不能联网-CSDN博客 &#xff08;2&#xff09;系统是Centos8&#xff0c;因为下载的dhcp-server软件包版本和Centos7不匹配,如果你能成…...

Qml之基本控件

一.Qml常用控件 1.Text(显示普通文本和富文本) 1.1显示普通文本&#xff1a; Window { visible: true width: 320 height: 240 title: qsTr("Hello World") Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color:…...

【Java从入门到放弃 之 Stream API】

Java Stream API Stream API行为参数化传递代码Lambda表达式Lambda 表达式的语法方法引用 Lambda 表达式的实际应用集合操作并发编程 Lambda 表达式的注意事项总结 Stream API Java8提供了一个全新的API - Stream。引入这个Stream的主要目的&#xff0c;一个是可以支持更好的并…...

Ruby On Rails 笔记1——Rails 入门

突然想跟着官方文档把Ruby On Rails过一遍&#xff0c;把一些有用的记下来就可以一直看了&#xff0c;do它! https://guides.rubyonrails.org/v7.2/ 注&#xff1a;官网是英文文档&#xff0c;我自己翻译了一下&#xff0c;不确保完全准确&#xff0c;只供自己学习开发使用。 …...

高效开发 Python Web 应用:FastAPI 数据验证与响应体设计

高效开发 Python Web 应用&#xff1a;FastAPI 数据验证与响应体设计 目录 &#x1f9d1;‍&#x1f4bb; FastAPI 的数据验证系统与 Pydantic 模型&#x1f4e6; 响应体与模型&#xff1a;定义响应数据的最佳实践&#x1f504; 响应模型与查询参数的结合&#xff1a;增强灵活…...

基于“开源 2+1 链动 O2O 商城小程序”的门店拉新策略与流程设计

摘要&#xff1a;在数字化商业浪潮席卷之下&#xff0c;实体门店面临着激烈的市场竞争&#xff0c;如何高效拉新成为关乎门店生存与发展的关键问题。本文聚焦于“开源 21 链动 O2O 商城小程序”&#xff0c;深入探讨结合多种手段的门店拉新策略及详细流程设计。通过剖析到店扫码…...

33.5 remote实战项目之设计prometheus数据源的结构

本节重点介绍 : 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写入数据 准备工作 新建项目 prome_remote_read_write设计prometheus 数据源的结构初始化 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写…...

微服务springboot详细解析(一)

目录 1.Spring概述 2.什么是SpringBoot&#xff1f; 3.第一个SpringBoot程序 4.配置参数优先级 5.springboot自动装配原理 6.SpringBootApplication&SpringApplication.run 7.ConfigurationProperties(prefix "") 8.Validated数据校验 29、聊聊该如何写一…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

拟合问题处理

在机器学习中&#xff0c;核心任务通常围绕模型训练和性能提升展开&#xff0c;但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正&#xff1a; 一、机器学习的核心任务框架 机…...