【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()

四、案例爬取结果

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

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZLMediaKit+wvp (ffmpeg+obs)推拉流测试

这里使用了两种方式: ffmpeg命令和 OBS OBS推流在网上找了些基本没有说明白的, 在ZLMediaKit的issues中看到了一个好大哥的提问在此记录一下 使用OBS推流&#xff0c;rtmp&#xff0c;报鉴权失败 推流 1. ffmpeg命令推流 官方说明文档地址: 推流规则 rtsp://192.168.1.4:10554…

Linux入门攻坚——40、Linux集群系统入门-lvs(1)

Cluster&#xff0c;集群&#xff0c;为了解决某个特定问题将多台计算机组合起来形成的单个系统。 这个单个集群系统可以扩展&#xff0c;系统扩展的方式&#xff1a;scale up&#xff0c;向上扩展&#xff0c;更换更好的主机&#xff1b;scale out&#xff0c;向外扩展&…

威胁驱动的网络安全方法论

本文主要内容取自洛克希德马丁公司的论文&#xff1a;A Threat-Driven Approach to Cyber Security&#xff0c;想要全面准确了解论文内容的朋友建议阅读原文。希望能够抛砖引玉&#xff0c;为相关领域的相关工作人员带来一点不同的思路或启发&#xff0c;从而更好地维护企业/组…

【Verilog】实验三 数码管实验

目录 一、实验目的&#xff1a; 二、实验内容: 三、实验要求&#xff1a; 四、实验步骤: 一、实验目的&#xff1a; 进一步熟悉Modelsim和VIVADO工具&#xff1b;掌握7段数码管显示译码器&#xff1b;掌握7段数码管数码管动态输出显示的方法。 二、实验内容: 实现按动开关…

Spring Cloud + MyBatis Plus + GraphQL 完整示例

Spring Cloud MyBatis Plus GraphQL 完整示例 1、创建Spring Boot子项目1.1 配置POM&#xff0c;添加必要的依赖1.2 配置MyBatis-Plus 2、集成GraphQL2.1 定义schema.graphqls2.2 添加GraphQL解析器2.3 配置schame文件配置 3、访问测试3.1 查询测试&#xff08;演示&#xff…

MySQL书籍推荐

《高性能MySQL&#xff08;第4版&#xff09;》-西尔维亚博特罗斯 系统层次 Mysql性能优化和高可用架构实践 2020 系统基础 MySQL性能调优与架构设计 系统基础 Mysql技术大全 2021 综合 MySQL数据库应用案例教程 综合实战 从入门到项目实践 综合实战 丰富 超值 MySQ…

MR30分布式IO模块赋能喷水织机

纺织行业作为我国传统支柱产业&#xff0c;历经数千年的演变&#xff0c;如今仍面临着诸多困境&#xff0c;在纺织行业中&#xff0c;每一次技术的飞跃都是对行业边界的勇敢探索。在纺织行业&#xff0c;喷水织机作为关键生产设备&#xff0c;其性能直接影响到产品质量和产能。…

nodejs循环导出多个word表格文档

文章目录 nodejs循环导出多个word表格文档一、文档模板编辑二、安装依赖三、创建导出工具类exportWord.js四、调用五、效果图nodejs循环导出多个word表格文档 结果案例: 一、文档模板编辑 二、安装依赖 // 实现word下载的主要依赖 npm install docxtemplater pizzip --save/…

LabVIEW中“this VI‘s owning library is missing”错误及解决

问题描述 当加载或打开一个VI时&#xff0c;如果其所属的项目库未加载到内存&#xff0c;LabVIEW将提示错误&#xff1a;“this VIs owning library is missing”&#xff08;该VI的所属库不存在&#xff09;。 该问题通常发生在以下情况下&#xff1a; 项目库文件丢失或路径…

LongVU:用于长视频语言理解的空间时间自适应压缩

晚上闲暇时间看到一种用于长视频语言理解的空间时间自适应压缩机制的研究工作LongVU&#xff0c;主要内容包括&#xff1a; 背景与挑战&#xff1a;多模态大语言模型&#xff08;MLLMs&#xff09;在视频理解和分析方面取得了进展&#xff0c;但处理长视频仍受限于LLM的上下文长…

sphinx基本使用

sphix是一个文档生成工具 本文介绍一些基础技能&#xff0c;如果想深入学习&#xff0c;可以查看官方文档 Sphinx官方文档 1.安装虚拟环境 # ubuntu # 使用 venv 创建 .venv虚拟环境 python3 -m venv .venv# 激活虚拟环境 source .venv/bin/activate# windows # 创建虚拟环境…

爬虫第四篇:Xpath 路径表达式全解析:从网页基础到爬取百度贴吧图片实战

简介&#xff1a;本文围绕 Xpath 路径表达式展开讲解&#xff0c;先是介绍了网页相关基础如 html、css、vue 以及前后端分离的概念与示例&#xff0c;包括各部分的结构、作用及简单代码展示&#xff0c;随后详细阐述了 xml 的节点关系、选取节点、谓语等理论知识&#xff0c;最…

HarmonyOS NEXT开发进阶(一):初识 HarmonyOS NEXT开发

文章目录 一、前言二、HarmonyOS NEXT 开发框架三、HarmonyOS NEXT开发指导3.1 Windows环境准备 四、项目拆解4.1 工程目录4.2 全局配置4.2.1 APP全局配置: AppScope层&#xff08;AppScope/app.json5&#xff09;4.2.3 签名全局配置 4.3 APP代码初始化4.4 APP签名文件配置4.5 …

Chrome控制台 网站性能优化指标一览

打开chrome-》f12/右键查看元素-》NetWrok/网络 ctrlF5 刷新网页&#xff0c;可以看到从输入url到页面资源请求并加载网页&#xff0c;用于查看资源加载&#xff0c;接口请求&#xff0c;评估网页、网站性能等&#xff0c;如下图&#xff1a; request、stransferred、resour…

【C++】入门【六】

本节目标 一、继承的概念及定义 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承及菱形虚拟继承 八、继承的总结和反思 九、笔试面试题 一、继承的概念及定义 1.继承的概念 继承是面向对象…

MacOS安装sshfs挂载远程电脑硬盘到本地

文章目录 sshfs简介sshfs安装下载安装macFUSE安装sshfs sshfs使用注意事项 sshfs简介 SSHFS&#xff08;SSH Filesystem&#xff09;是一种基于FUSE&#xff08;用户空间文件系统&#xff09;的文件系统&#xff0c;它允许你通过SSH协议挂载远程文件系统。使用SSHFS&#xff0…

亚马逊云(AWS)使用root用户登录

最近在AWS新开了服务器&#xff08;EC2&#xff09;&#xff0c;用于学习&#xff0c;遇到一个问题就是默认是用ec2-user用户登录&#xff0c;也需要密钥对。 既然是学习用的服务器&#xff0c;还是想直接用root登录&#xff0c;下面开始修改&#xff1a; 操作系统是&#xff1…

深度学习中的迁移学习:应用与实践

引言 在深度学习领域&#xff0c;迁移学习&#xff08;Transfer Learning&#xff09;是一个非常强大且日益流行的概念&#xff0c;它通过将从一个任务中学到的知识应用于另一个任务&#xff0c;能够显著加快模型训练速度并提高其泛化能力。迁移学习在许多实际应用中都得到了广…

股市复盘笔记

复盘是股市投资中非常重要的一个环节&#xff0c;它指的是投资者在股市收盘后&#xff0c;对当天的市场走势、个股表现以及自己的交易行为进行回顾和总结&#xff0c;以便更好地指导未来的投资决策。以下是对复盘的详细解释&#xff1a; 一、复盘的目的 总结市场走势&#xff…

ubuntu18.04+qt 5.12.12+安装和实验

引用 【QT | 开发环境搭建】Linux系统(Ubuntu 18.04) 安装 QT 5.12.12 开发环境 ubuntu18.04 安装qt5.12.8及环境配置 1.安装包链接 第一篇中写了 http://download.qt.io/archive/qt/5.12/5.12.12/qt-opensource-linux-x64-5.12.12.run2.安装 到下载目录下 sudo chmod ax…