豆瓣电影信息爬虫实战-2024年6月

豆瓣电影信息爬虫教程

摘要

本文将详细介绍如何使用Python编写一个爬虫程序,用于抓取豆瓣电影列表页面上的电影详细信息。通过本教程,你将学习到如何使用requestsPyQuery库来发送HTTP请求、解析HTML内容,并提取所需的数据。

目录

  • 环境搭建
  • 技术栈介绍
  • 爬虫逻辑概述
  • 详细代码解析
  • 运行爬虫
  • 注意事项
  • 结论

环境搭建

在开始之前,请确保你的Python环境已经安装了以下库:

pip install requests pyquery

技术栈介绍

  • Python: 一种易于学习且功能强大的编程语言。
  • Requests: 用于发送HTTP请求的库。
  • PyQuery: 类似于jQuery的库,用于解析HTML文档。
  • re (正则表达式): 用于字符串搜索和匹配。

爬虫逻辑概述

本爬虫的主要任务是从一个给定的豆瓣电影列表页面URL中提取电影的详细信息,包括:

  • 电影标题
  • 导演
  • 主演
  • 类型
  • 制作地区
  • 发行年份
  • 评分数量
  • 每部电影的详细URL

详细代码解析

import requests
from pyquery import PyQuery as pq
import redef doulist_crawler(url):'''联系方式:wx: Wusp1994企鹅号: 812190146此函数爬取豆瓣电影列表页面,并提取列出的电影的详细信息。该函数向指定的豆瓣电影列表URL发送GET请求,并使用预定义的头部信息来模拟浏览器请求。如果请求成功,它将使用PyQuery解析HTML内容,并提取电影的详细信息,如标题、导演、主演、类型、地区、年份、评分和评分数量。每部电影的信息存储在一个字典中,并添加到名为'doulist'的列表中。然后打印出详细信息。提取的数据包括:- 电影标题- 导演- 主演- 类型- 制作地区- 发行年份- 评分数量- 每部电影的详细URL参数:url (str): 要爬取的豆瓣-豆列的电影列表页面的URL。https://www.douban.com/doulist/240962/返回:list: 包含每部电影详细信息的字典组成的列表。:return:'''# 定义请求头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','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',# 其他需要的请求头...}# 发送 GET 请求并获取响应内容response = requests.get(url, headers=headers)# 确保请求成功if response.status_code == 200:# 使用 PyQuery 解析网页内容doc = pq(response.text)doulist_item_doc = doc(".doulist-item")doulist = []for item in doulist_item_doc.items():item_dict = {}# 初始化变量director = Nonestarring = Nonegenre = Noneregion = Noneyear = Nonedetail_url = item(".title a").attr("href")title = item(".title a").text()rating_nums = item(".rating_nums").text()rating_count_text = item('.rating span:contains("人评价")').text()rating_count = int(re.search(r'\d+', rating_count_text).group(0))lines = item('div.abstract').text().split('\n')for line in lines:if '导演' in line:director = line.split('导演:')[-1].strip()elif '主演' in line:starring = line.split('主演:')[-1].strip()elif '类型' in line:genre = line.split('类型:')[-1].strip()elif '制片国家/地区' in line:region = line.split('制片国家/地区:')[-1].strip()elif '年份' in line:year = line.split('年份:')[-1].strip()item_dict['director'] = directoritem_dict['starring'] = starringitem_dict['genre'] = genreitem_dict['region'] = regionitem_dict['year'] = yearitem_dict['detail_url'] = detail_urlitem_dict['title'] = titleitem_dict['rating_count'] = rating_countdoulist.append(item_dict)return doulist  # 返回电影列表else:# 联系方式:# wx: Wusp1994# 企鹅号: 812190146print(f"请求失败,状态码:{response.status_code}")return []  # 如果请求失败,返回空列表if __name__ == "__main__":# 联系方式:# wx: Wusp1994# 企鹅号: 812190146move_list = doulist_crawler('https://www.douban.com/doulist/240962/')print(move_list)

导入库

import requests
from pyquery import PyQuery as pq
import re

定义爬虫函数

def doulist_crawler(url):# 函数定义,接受一个豆瓣电影列表页面的URL

设置请求头

headers = {'User-Agent': '...','Accept': '...'
}

发送GET请求

response = requests.get(url, headers=headers)

检查响应状态

if response.status_code == 200:# 请求成功,继续处理

解析HTML内容

doc = pq(response.text)

提取电影信息

遍历电影列表项,提取每部电影的相关信息:

for item in doulist_item_doc.items():# 提取信息并存储到字典

存储与返回电影信息

doulist.append(item_dict)
return doulist

运行爬虫

要运行爬虫,只需调用doulist_crawler函数,并传入豆瓣电影列表页面的URL:

movies = doulist_crawler('https://www.douban.com/doulist/240962/')
print(movies)

注意事项

  • 遵守豆瓣的使用条款,避免频繁请求。
  • 考虑网站的反爬虫机制,可能需要使用代理或更新请求头。
  • 爬取的数据仅用于个人学习和研究,不得用于商业用途。

结论

通过本文,你已经学习了如何使用Python编写一个简单的爬虫来抓取豆瓣电影信息。这是一个实践网络请求和HTML解析的好机会。希望本文对你有所帮助,祝你编程愉快。

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

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

相关文章

【机器学习】使用RetinaNet解决图像识别的正负样本失衡问题

1. 引言 1.1. 研究背景 正负样本失衡问题的表现和影响在目标检测任务中尤为显著,下面我将从多个方面更详细地阐述这一问题: 1.1.1.正负样本失衡的表现形式 样本数量差异显著: 在目标检测的数据集中,正样本(包含目标…

电线电缆单根燃烧试验 电缆垂直燃烧试验

电线电缆单根燃烧试验 电线电缆单根燃烧试验是一种用来评估电线电缆在受到火焰作用时的燃烧性能的测试方法。这种试验通常是将电线电缆垂直固定,然后使用特定的火焰源对其进行燃烧,以观察电线电缆的燃烧行为和燃烧速度。通过这个试验,可以评估…

护眼台灯哪个品牌好?几款性价比最高的护眼台灯推荐

在过去,科技尚未发展至如今这般先进水平时,晚上需要照明的时候,我们通常只能依赖白炽灯。尽管白炽灯以其低成本和接近自然光的显色性获得了一定的青睐,随着时代的发展,现在市面上出现了更为护眼的选择——LED台灯。然而…

一文介绍暗区突围手游 游戏特色、具体玩法和独特的玩法体验

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 《暗区突围》是一款由腾讯魔方工作室群开发的第一人称射击游戏,于 2022 年 7 月 13 日正式公测,支持 Android 和 iOS 平台。这款游戏以从虚构的暗区收集物资并安全撤离作为最终目…

OpenGauss数据库-7.用户及角色

第1关:创建用户 gsql -d postgres -U gaussdb -W passwd123123 CREATE USER jackson WITH PASSWORD jackson123; 第2关:修改用户 gsql -d postgres -U gaussdb -W passwd123123 ALTER USER jackson WITH PASSWORD Abcd123; 第3关:创建角色 …

【JVM】JVM 的内存区域

Java虚拟机(JVM)在执行Java程序时,将其运行时数据划分到若干不同的内存区域。这些内存区域的管理对Java应用程序的性能和稳定性有着重要影响。JVM的内存区域主要包括以下几部分: 方法区(Method Area)&#…

Qt实现简易播放器

效果如图 源码地址: 简易播放器: 基于Qt的简易播放器,底层采用VLC源码 - Gitee.com GitHub:GitHub - a-mo-xi-wei/easy-player: 基于Qt的调用VLC的API的简易播放器

Linux操作系统学习:day01

内容来自:Linux介绍 视频推荐:Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试 day01 基础概念 Linux 是 UNIX 操作系统的一个克隆系统, 但是Linux是开源的。 Linux是一个基于文件的操作系统。操作系统需要和硬件进行交互…

【TensorFlow深度学习】使用TensorFlow实现双DQN与优先级经验回放

使用TensorFlow实现双DQN与优先级经验回放 使用TensorFlow实现双DQN与优先级经验回放:强化学习的高级策略探索双DQN算法简介优先级经验回放代码实现结语 使用TensorFlow实现双DQN与优先级经验回放:强化学习的高级策略探索 在深度强化学习领域&#xff0…

QQ音乐绿钻API接口:解锁更多音乐可能性

在我们日常生活中,音乐是不可或缺的一部分。无论是在上班途中,还是在健身房锻炼时,我们都可以通过听音乐来放松自己。然而,在现如今的音乐市场中,有时候我们会觉得收听的歌曲有限,想要尝试更多不同的音乐类…

《大道平渊》· 拾贰 —— 天下大事必作于细:做好每一件小事,必然大有所成!

《平渊》 拾贰 "天下难事必作于易,天下大事必作于细。" 社群一位大佬最近在研究新项目, 他做事的 "方法论" 令我深受启发。 他在测试项目时, 每一步都做的非常细致: 整个项目的测试都被划分为一件件小事, 然后有条不紊地推进…… …

代码随想录刷题笔记-哈希表篇

文章目录 242 有效的字母异位词(easy)力扣地址题目描述题目实例解题思路代码实现 383 赎金信(easy)力扣地址题目描述题目实例解题思路代码实现 49 字母异位词分组(mid)力扣地址题目描述题目实例解题思路代码实现 438 找到字符串中所有字母异位词(mid)力扣地址题目描述题目实例解…

【回溯】Leetcode 77. 组合【中等】

组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解题思路 定义递归函数&#xff1…

免费插件集-illustrator插件-Ai插件-文本属性批处理

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,进行文本属性批处理。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

16个免费学习Python的网站和教程(2024年最新资源)

16个免费学习Python的网站和教程(2024年最新资源) 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典&#xff…

利用python写一个根据聊天记录洞察事情的主题内容

要根据聊天记录洞察事情的主题内容,我们可以使用Python分析聊天文本的情感、关键词和主题。以下是一个简单的示例,展示了如何使用Python和相关库实现这一目标: 1. 首先,安装所需库: bash pip install nltk pip instal…

认识Django框架,使用Django 2024新手创建Django项目,使用编译工具:Pycharm

Django简单介绍 Django 是一个用 Python 编写的开源 web 应用框架,旨在促进快速开发、维护和部署高效、可扩展的 web 应用程序。它是遵循模型-模板-视图(MTV)设计模式的一个高级框架,尽管有时也被描述为遵循MVC(模型-…

【Three.js】知识梳理一:Three.js概述和基础知识

1.Three.js简介 Three.js是一个基于JavaScript编写的开源3D图形库,利用WebGL技术在网页上渲染3D图形。它提供了许多高级功能,如几何体、纹理、光照、阴影等,以便开发者能够快速地创建复杂且逼真的3D场景。同时,Three.js还具有很好…

使用seq2seq架构实现英译法

seq2seq介绍 模型架构: Seq2Seq(Sequence-to-Sequence)模型是一种在自然语言处理(NLP)中广泛应用的架构,其核心思想是将一个序列作为输入,并输出另一个序列。这种模型特别适用于机器翻译、聊天…

运用HTML+CSS+JS做一个贪吃蛇游戏

贪吃蛇游戏 前言效果图部分源码领取源码下期更新预报 前言 H5贪吃蛇大战HTML源码,可在本地浏览器打开访问index.html,或者上传到服务器或虚拟空间进行游玩! PC版操作 鼠标点击一下之后就可以控制方向,按A加速 移动端操作 左侧…