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

案例:爬取豆瓣电影 Top250 的数据

这是一个简单的Python爬虫案例,通过发送 HTTP 请求,解析网页内容,提取目标信息,并循环爬取多页数据,最终获得了豆瓣电影 Top250 的电影名称、评分、评价人数等信息。您可以根据这个示例来编写其他爬虫案例,并根据需要对代码进行修改和扩展。

1. 目标:

爬取豆瓣电影 Top250 的电影名称、评分、评价人数等信息。

 2. 实现过程:

2.1 导入必要的库

import requestsfrom bs4 import BeautifulSoup

2.2 发送 HTTP 请求并解析网页内容

def get_movie_data(url):response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')return soup

2.3 提取电影信息

def extract_movie_info(soup):movie_list = []items = soup.find_all('div', class_='item')for item in items:title = item.find('span', class_='title').textrating = item.find('span', class_='rating_num').textvotes = item.find('span', class_='inq').textmovie_list.append({'title': title, 'rating': rating, 'votes': votes})return movie_list

2.4 爬取多页数据

def crawl_top250():base_url = 'https://movie.douban.com/top250?start={}&filter='movie_data = []for start in range(0, 250, 25):url = base_url.format(start)soup = get_movie_data(url)movie_data.extend(extract_movie_info(soup))return movie_data

 2.5 执行爬虫并输出结果

if __name__ == "__main__":top250_movies = crawl_top250()for movie in top250_movies:print(f"电影:{movie['title']},评分:{movie['rating']},评价人数:{movie['votes']}")

 3. 代码实现讲解:

- 导入必要的库: 使用 `requests` 库发送 HTTP 请求,使用 `BeautifulSoup` 库解析网页内容。

- 发送 HTTP 请求并解析网页内容: `get_movie_data` 函数负责发送 HTTP 请求获取网页内容,并使用 BeautifulSoup 解析网页。

- 提取电影信息: `extract_movie_info` 函数从解析后的网页内容中提取电影的名称、评分、评价人数等信息,并以字典的形式保存。

- 爬取多页数据: `crawl_top250` 函数循环爬取豆瓣电影 Top250 的多个页面,并调用提取信息的函数。

- 执行爬虫并输出结果: 在 `__main__` 部分调用 `crawl_top250` 函数执行爬虫,并打印爬取结果。

这是一个简单的爬虫案例,通过发送 HTTP 请求,解析网页内容,提取目标信息,并循环爬取多页数据,最终获得了豆瓣电影 Top250 的电影名称、评分、评价人数等信息。您可以根据这个示例来编写其他爬虫案例,并根据需要对代码进行修改和扩展。

相关文章:

  • VBA技术资料MF117:测试显示器大小
  • 深度学习自然语言处理(NLP)模型BERT:从理论到Pytorch实战
  • 设计模式1-访问者模式
  • Linux 命令行速查表
  • Android 11 访问 Android/data/或者getExternalCacheDir() 非root方式
  • vim常用命令以及配置文件
  • centos安装inpanel
  • 按键扫描16Hz-单片机通用模板
  • PostgreSQL 与 MySQL 相比,优势何在?
  • containerd中文翻译系列(十九)cri插件
  • Java开发IntelliJ IDEA2023
  • Vue 进阶系列丨实现简易VueRouter
  • 无人机飞控算法原理基础研究,多旋翼无人机的飞行控制算法理论详解,无人机飞控软件架构设计
  • Guava RateLimiter单机实战指南
  • PWM输入输出
  • ES6指北【2】—— 箭头函数
  • 【5+】跨webview多页面 触发事件(二)
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • go append函数以及写入
  • IOS评论框不贴底(ios12新bug)
  • jquery ajax学习笔记
  • js
  • JS实现简单的MVC模式开发小游戏
  • Next.js之基础概念(二)
  • spring-boot List转Page
  • XML已死 ?
  • 前端性能优化--懒加载和预加载
  • 强力优化Rancher k8s中国区的使用体验
  • 如何用vue打造一个移动端音乐播放器
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 原生 js 实现移动端 Touch 滑动反弹
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Z2294. 打印树的直径
  • $forceUpdate()函数
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (Note)C++中的继承方式
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (第61天)多租户架构(CDB/PDB)
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (三)mysql_MYSQL(三)
  • (一一四)第九章编程练习
  • (转)Scala的“=”符号简介
  • (轉貼) UML中文FAQ (OO) (UML)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .net framework profiles /.net framework 配置
  • .net操作Excel出错解决
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @PreAuthorize注解
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限