【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的支持较好)。例如:
 ```python
 from bs4 import BeautifulSoup
 import requests
 url = "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').text
        movie_link = url+movie.find('a')['href'].strip("/")
        print(f"电影名称: {movie_name}")
        print(f"电影链接: {movie_link}")

# 关闭响应
res.close()


四、案例爬取结果

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

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

MATLAB期末复习笔记(中)

目录 三、MATLAB函数和程序结构 1.MATLAB文件 2.变量和数据类型 &#xff08;1&#xff09;变量 &#xff08;2&#xff09;变量类型 &#xff08;3&#xff09;字符串 3.函数文件 &#xff08;1&#xff09;函数文件规范 &#xff08;2&#xff09;子函数和私有函数 &…

算法刷题Day8:BM30 二叉搜索树与双向链表

题目 牛客网题目传送门 思路 对二叉搜索树进行中序遍历&#xff0c;结果就是按序数组。因此想办法把前面遍历过的节点给记下来&#xff0c;记作pre。当遍历到某个节点node的时候&#xff0c;令前驱指向pre&#xff0c;然后让pre的后驱指向node。 代码 class TreeNode:def…

深入解析 Dubbo 中的常见问题及优化方案: 数据量限制与配置错误20241203

&#x1f31f; 深入解析 Dubbo 中的常见问题及优化方案&#xff1a;数据量限制与配置错误 在分布式系统中&#xff0c;Dubbo 作为高性能的 RPC 框架广泛应用于企业服务化架构。然而&#xff0c;在实际使用过程中&#xff0c;开发者往往会遇到一些复杂问题&#xff0c;比如 数据…

debian ubuntu armbian部署asp.net core 项目 开机自启动

我本地的环境是 rk3399机器&#xff0c;安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库&#xff0c;但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…

【AI系统】Ascend C 编程范式

Ascend C 编程范式 AI 的发展日新月异&#xff0c;AI 系统相关软件的更新迭代也是应接不暇&#xff0c;作为一本讲授理论的作品&#xff0c;我们将尽可能地讨论编程范式背后的原理和思考&#xff0c;而少体现代码实现&#xff0c;以期让读者理解 Ascend C 为何这样设计&#x…

hadoop环境配置-创建hadoop用户+更新apt+安装SSH+配置Java环境

一、创建hadoop用户(在vm安装的ubantu上打开控制台) 1、sudo useradd -m hadoop -s /bin/bash &#xff08;创建hadoop用户&#xff09; 2、sudo passwd hadoop (设置密码) 3、sudo adduser hadoop sudo&#xff08;将新建的hadoop用户设置为管理员&#xff09; 执行如下图 将…

嵌入式系统应用-LVGL的应用-平衡球游戏 part1

平衡球游戏 part1 1 平衡球游戏的界面设计2 界面设计2.1 背景设计2.2 球的设计2.3 移动球的坐标2.4 用鼠标移动这个球2.5 增加边框规则2.6 效果图 3 为小球增加增加动画效果3.1 增加移动效果代码3.2 具体效果图片 平衡球游戏 part2 第二部分文章在这里 1 平衡球游戏的界面设计…

从被动响应到主动帮助,ProActive Agent开启人机交互新篇章

在人工智能领域&#xff0c;我们正见证着一场革命性的变革。传统的AI助手&#xff0c;如ChatGPT&#xff0c;需要明确的指令才能执行任务。但现在&#xff0c;清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent&#xff0c;它能够主动观察环境…

2.mysql 中一条更新语句的执行流程是怎样的呢?

前面我们系统了解了一个查询语句的执行流程&#xff0c;并介绍了执行过程中涉及的处理模块。 相信你还记得&#xff0c;一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块&#xff0c;最后到达存储引擎。 那么&#xff0c;一条更新语句的执行流程又…

NaviveUI框架的使用 ——安装与引入(图标安装与引入)

文章目录 概述安装直接引入引入图标样式库 概述 &#x1f349;Naive UI 是一个轻量、现代化且易于使用的 Vue 3 UI 组件库&#xff0c;它提供了一组简洁、易用且功能强大的组件&#xff0c;旨在为开发者提供更高效的开发体验&#xff0c;特别是对于构建现代化的 web 应用程序。…

web vue 滑动选择 n宫格选中 九宫格选中

页面动态布局经常性要交给客户来操作&#xff0c;他们按时他们的习惯在同一个屏幕内显示若干个子视图&#xff0c;尤其是在医学影像领域对于影像的同屏显示目视对比显的更为重要。 来看看如下的用户体验&#xff1a; 设计为最多支持5行6列页面展示后&#xff0c;右侧的布局则动…

ELK的Filebeat

目录 传送门前言一、概念1. 主要功能2. 架构3. 使用场景4. 模块5. 监控与管理 二、下载地址三、Linux下7.6.2版本安装filebeat.yml配置文件参考&#xff08;不要直接拷贝用&#xff09;多行匹配配置过滤配置最终配置&#xff08;一、多行匹配、直接读取日志文件、EFK方案&#…

C#调用c++创建的动态链接库dll文件

在C#中调用外部DLL文件是一种常见的编程实践&#xff0c;它具有以下几个重要意义&#xff1a;1.代码重用&#xff1b;2.模块化&#xff1b;3.性能优化&#xff1b;4.安全性&#xff1b;5.跨平台兼容性&#xff1b;6.方便更新和维护&#xff1b;7.利用特定技术或框架&#xff1b…

重建大师重建的模型坐标有偏差怎么解决?

第一遍自由网空三&#xff0c;跑完之后刺点&#xff0c;然后控制点平差增强参数解算&#xff0c;方法如下&#xff1a; &#xff08;1&#xff09;跑完自由网空三后&#xff0c;选择编辑控制点&#xff0c;出现刺点窗口后&#xff0c;导入控制点参数 &#xff08;2&#xff09…

Apache Airflow 快速入门教程

Apache Airflow已经成为Python生态系统中管道编排的事实上的库。与类似的解决方案相反&#xff0c;由于它的简单性和可扩展性&#xff0c;它已经获得了普及。在本文中&#xff0c;我将尝试概述它的主要概念&#xff0c;并让您清楚地了解何时以及如何使用它。 Airflow应用场景 …

GEE Download Data——气温数据的下载

GEE数据下载第二弹!今天我们来分享气温数据的下载。 一、数据介绍 气温数据我们要用到的是MODIS数据产品,MOD11A2 V6.1 产品提供 1200 x 1200 公里网格内 8 天平均陆地表面温度 (LST)。 MOD11A2 中的每个像素值都是该 8 天内收集的所有相应 MOD11A1 LST 像素的简单平均值。…

分布式推理框架 xDit

1. xDiT 简介 xDiT 是一个为大规模多 GPU 集群上的 Diffusion Transformers&#xff08;DiTs&#xff09;设计的可扩展推理引擎。它提供了一套高效的并行方法和 GPU 内核加速技术&#xff0c;以满足实时推理需求。 1.1 DiT 和 LLM DiT&#xff08;Diffusion Transformers&am…

uniapp 自定义导航栏增加首页按钮,仿微信小程序操作胶囊

实现效果如图 抽成组件navbar.vue&#xff0c;放入分包 <template><view class"header-nav-box":style"{height:Props.imgShow?:statusBarHeightpx,background:Props.imgShow?:Props.bgColor||#ffffff;}"><!-- 是否使用图片背景 false…

张伟楠动手学强化学习笔记|第一讲(上)

张伟楠动手学强化学习笔记|第一讲&#xff08;上&#xff09; 人工智能的两种任务类型 预测型任务 有监督学习无监督学习 决策型任务 强化学习 序贯决策(Sequential Decision Making) 智能体序贯地做出一个个决策&#xff0c;并接续看到新的观测&#xff0c;知道最终任务结…

《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因?“找不到mfc140u.dll文件”要怎么解决?教你几招轻松搞定

《只狼》运行时提示“mfc140u.dll文件缺失”的科普与解决方案 作为一名软件开发从业者&#xff0c;在游戏开发和维护过程中&#xff0c;我们经常会遇到各种运行时错误和系统报错。今天&#xff0c;我们就来探讨一下《只狼》这款游戏在运行时提示“mfc140u.dll文件缺失”的原因…