【python爬虫】豆瓣爬虫学习

文章目录

  • 网页地址
  • 爬虫目标
  • 技术栈
  • 爬虫代码
  • 注意事项


Python爬虫学习:我们可以选择一个相对简单的网站进行数据抓取。这里以抓取“豆瓣电影Top250”的信息为例,这个网站提供了丰富的电影数据,包括电影名称、评分、导演、演员等信息。
在这里插入图片描述

网页地址

  • https://movie.douban.com/top250

爬虫目标

  • 抓取每部电影的名称、评分、简介和前几位主演的名字。

技术栈

  1. Python 3.x
  2. requests:用于发送HTTP请求。
  3. BeautifulSoup4:用于解析HTML文档。

爬虫代码

首先,确保你已经安装了requestsbeautifulsoup4库,如果没有安装,可以通过以下命令安装:

pip install requests beautifulsoup4

以下是完整的爬虫代码:

# 导入requests库用于发送HTTP请求
import requests
# 导入BeautifulSoup库用于解析HTML文档
from bs4 import BeautifulSoup# 定义一个函数用于获取电影数据
def fetch_movie_data():# 设置请求的URL,这里是豆瓣电影Top 250的页面url = "https://movie.douban.com/top250"# 设置请求头,伪装成浏览器访问headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}# 发送GET请求,获取页面内容response = requests.get(url, headers=headers)# 使用BeautifulSoup解析获取到的页面内容soup = BeautifulSoup(response.text, 'html.parser')# 查找页面中所有的电影条目movies = soup.find_all('div', class_='item')# 遍历每部电影条目for movie in movies:# 提取电影标题title = movie.find('span', class_='title').text# 提取电影评分rating = movie.find('span', class_='rating_num').text# 提取电影的详细信息,这里只取第一行info = movie.find('div', class_='bd').find('p').text.strip().split('\n')[0]# 提取主演信息,可能有多个主演,通过分割和筛选获取actors = [actor.strip() for actor in info.split('/') if actor.strip().startswith('主演')]# 如果有主演信息,去除'主演:'并用逗号连接,否则显示'N/A'actors = ', '.join(actors).replace('主演:', '') if actors else 'N/A'# 打印电影的标题、评分和主演信息print(f"Title: {title}")print(f"Rating: {rating}")print(f"Actors: {actors}\n")# 判断是否是直接运行此脚本,如果是,则调用fetch_movie_data函数
if __name__ == "__main__":fetch_movie_data()

在这里插入图片描述

代码解释:

这段Python代码定义了一个函数fetch_movie_data()用于从豆瓣电影Top250页面抓取电影数据,包括电影标题、评分以及主演信息,并打印这些信息。

下面是代码的详细解释:

  1. 导入必要的库

    • requests:用于发送HTTP请求。
    • BeautifulSoup:用于解析HTML文档。
  2. 定义fetch_movie_data函数

    • 设置目标URL为豆瓣电影Top250页面。
    • 设置请求头headers,其中包含一个模拟浏览器的User-Agent字符串,这是为了绕过网站可能的反爬虫机制。
  3. 发送GET请求并解析HTML

    • 使用requests.get方法发送GET请求到指定URL,获取响应文本。
    • 使用BeautifulSoup解析响应文本,创建一个soup对象,这个对象可以用来解析和提取HTML元素。
  4. 提取电影信息

    • 使用soup.find_all找到所有的电影条目,每个电影条目是一个div标签,类名为item
    • 对于每部电影,使用find方法来查找特定的信息:
      • 电影名称:查找类名titlespan标签。
      • 评分:查找类名rating_numspan标签。
      • 信息:查找div标签下的p标签,此标签通常包含电影的年份、国家、类型及演员等信息。
    • info中提取主演信息,通过查找以“主演”开始的字符串,然后去除“主演:”,并将所有主演名字用逗号连接起来。
  5. 打印电影信息

    • 打印电影标题、评分和主演信息。
  6. 执行函数

    • __main__模块下调用fetch_movie_data函数,执行抓取和打印操作。

注意事项

  1. 遵守网站规则:在实际操作中,请确保你的行为符合目标网站的robots.txt文件规定,不要对服务器造成过大负担。
  2. 动态加载内容:有些网站使用JavaScript动态加载内容,这可能需要使用如Selenium这样的工具来模拟浏览器行为。
  3. 错误处理:在实际应用中,应加入更完善的错误处理机制,比如重试策略、超时设置等。

漠漠水田飞白鹭,阴阴夏木啭黄鹂。

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

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

相关文章

AI大模型技术在音乐创造的应用前景

大模型技术在音乐创作领域具有广阔的应用前景,可以为音乐家、作曲家和音乐爱好者提供以下方面的帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 音乐创作辅助:大模型可以帮助音乐家和作曲家生成旋律、和声…

Win脚本开机自启ALIst和RClone

转自个人博客:https://www.jjy2023.cn/2024/05/23/win%e8%84%9a%e6%9c%ac%e5%bc%80%e6%9c%ba%e8%87%aa%e5%90%afalist%e5%92%8crclone/ 在配置完alist和rclone之后,就只需要每次开机启动两者就行了,所以感觉使用AListHelper没有必要&#xff…

算法金 | 协方差、方差、标准差、协方差矩阵

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 抱个拳,送个礼 1. 方差 方差是统计学中用来度量一组数据分散程度的重要指标。它反映了数据点与其均值之间的偏离程度。在…

Flask无法Debug

问题描述 Flask Debug的时候,可能会无法进入断点。我使用的是pycharm CE版本。 解决方案 确保pycharm安装路径不带空格。(带空格路径导致debug程序启动报错)Gevent compatible,这个东西老的pycharm版本必须勾选它,新…

中霖教育靠谱吗?在职备考一建好通过吗?

中霖教育靠谱吗?在职备考一建好通过吗? 课程设置:报名后会进行测评,了解学员的知识掌握情况、时间安排和记忆思维特点等,制定更适合的学习计划。 课程以考试通过为目标,去繁化简,只讲有用的干货,帮助快…

Python的GIL

Python的GIL是什么?它对多线程编程有什么影响? GIL(全局解释器锁)是Python解释器中的一个机制,它是为了保证在任何时刻只有一个线程执行Python字节码。GIL的存在主要因为Python的内存管理和垃圾回收机制是线程不安全的…

使用Vite工具创建项目,并使用Vue Router步骤

步骤 1: 安装 Vite 首先,确保你的电脑上已经安装了Node.js和npm。然后,通过以下命令全局安装Vite(如果已经安装,请跳过此步骤): npm install -g create-vite步骤 2: 创建新的Vue项目 使用Vite创建一个新…

Python 学习之标准库(二)

Python标准库是指Python编程语言自带的一组模块和包,它们是Python语言的核心组成部分,为开发者提供了丰富的功能和工具,帮助快速实现各种功能需求。以下是对Python标准库的一些主要内容和模块的归纳: 1. 数学计算: a.…

Python驱动的智能客服系统构建实录

Python驱动的智能客服系统构建实录 作为技术领域的老将,今天我打算带大家深挖一个热门应用——智能客服系统,并且如何通过Python这门万能钥匙,结合前沿的深度学习技术,赋予其更为人性化、高效的沟通能力。同时,我们不…

VLOOKUP函数在表格的简单运用-两个表匹配

1.什么是VLOOKUP? VLOOKUP是Excel中的一个内置函数,主要用于在区域或表格的首列查找指定的值,并返回该行中其他列的值。它特别适用于跨表格数据匹配 2.函数运用 2.1.这边两个表取名a表和b表,做为我们的实例表。 表格a包含&…

第二十一站:Java的多彩之旅终结篇

异步编程与反应式系统:应对高并发挑战 随着互联网应用对响应速度和并发处理能力要求的提高,Java生态系统也与时俱进,引入了异步编程模型和反应式编程框架,以应对现代应用的挑战。 异步编程 Java 8引入了CompletableFuture&…

JavaScript高级程序设计(第四版)--学习记录之迭代器与生成器(上)

什么是迭代? 迭代的意思是按照顺序反复多次执行一段程序。循环是迭代机制的基础,因为它可以指定迭代的次数,以及每次迭代要执行的操作。 迭代器模式 迭代器模式描述了一个方案,可以把有些结构称为“可迭代对象” ,这些…

基于 DJYOS 的 HMI 场景研究:探索智能生活的无限可能

引言: 在当今数字化时代,人机界面(HMI)技术的发展正深刻改变着我们的生活方式。DJYOS 作为一款先进的操作系统,为 HMI 产品的开发提供了强大的支持。本文将深入探讨基于 DJYOS 的 HMI 场景,展示其在智能家…

通过rediss实现用户菜单智能推荐

本人用的框架 SpringCloud redisOauth2Security 前言: 整体使用过滤器的思想,获取Request,然后从数据库查到菜单名称和路由以及计算点击次数,最后以list的形式存在redis,设计定时任务,在一定时间后&#x…

Search for documents with similar texts

题意:搜索具有相似文本的文档 问题背景: I have a document with three attributes: tags, location, and text. 我有一份文档,包含三个属性:标签、位置和文本。 Currently, I am indexing all of them using LangChain/pgvecto…

快速了解《大模型赋能下的AI2.0数字人平台》白皮书

在生成式AI和大模型的赋能下,数字人迎来AI 2.0时代。它能否成为每个人的“数字分身”,转化为新型的AI劳动力工具?商汤科技与上海市人工智能技术协会、零壹智库、增强现实核心技术产业联盟联合发布《大模型赋能下的AI 2.0数字人平台》。《白皮…

Kubernetes面试整理-PersistentVolumes和PersistentVolumeClaims的使用和配置

在 Kubernetes 中,PersistentVolumes (PV) 和 PersistentVolumeClaims (PVC) 提供了一种分离存储和使用存储的机制。PV 是集群中存储资源的抽象表示,而 PVC 是用户对存储资源的请求。通过这种机制,用户可以动态地申请和管理存储资源。 PersistentVolumes (PV) PersistentVol…

【D3.js in Action 3 精译】1.2.2 可缩放矢量图形(二)

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介 1.1 何为 D3.js?1.2 D3 生态系统——入门须知 1.2.1 HTML 与 DOM1.2.2 SVG - 可缩放矢量图形 ✔️ 第一部分【第二部分】✔️第三部分(精译中 ⏳) 1.2.3 Canvas 与 WebGL&#x…

自动化任务:在IPython中创建和运行脚本

在数据科学和编程中,自动化任务是提高效率的关键。IPython提供了多种方法来创建和运行脚本,使得重复性任务可以被轻松自动化。本文将介绍如何在IPython中创建和运行脚本,帮助你更高效地完成工作。 1. 创建和保存IPython脚本 使用文本编辑器…

Spring Boot 中的微服务监控与管理

微服务的概述 微服务架构的优点和挑战 优点: 灵活性和可扩展性:微服务架构允许每个服务单独部署和扩展,这使得系统可以更灵活地适应不同的业务需求和负载变化。 使团队更加聚焦:每个微服务都有明确的职责,这使得开发团队可以更加聚焦,专注于开发他们的服务。 技术和框…