开学了,爬一下某瓣电影Top250,挑几部电影康康~

2023-12-25 13:50

本文主要是介绍开学了,爬一下某瓣电影Top250,挑几部电影康康~,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随便说几句

打游戏和学习之余,最喜欢看电影啦~
开学了,无聊的时候挑一部高分电影欣赏欣赏
D瓣电影:
号称提供最新的电影介绍及评论包括上映影片的影讯。
来这里找 高分的电影再好不过。

'''博文说明:编写时间: 2021-03-01爬取入口url: https://movie.douban.com/top250用到的库:request,fake-useragent,BeautifulSoup csv工具:python 3.9、Pycharm、Chorme Browser  采用: select 方法来定位标签爬取如下字段:{  '排名':rank,'标题': title,'简介': info,'影评':quote,'电影评分': score,'详情URL':movie_url,'照片URL': movie_pic,}保存到: .csv 格式
'''

假设用到的库、工具都准备好了、也会使用啦,那么…

一、首先当然是分析网站

1.用打开website D瓣TOP 250 https://movie.douban.com/top250

2.按F12 打开chorme Developer Tools (开发者工具)

3.然后这样点Network 刷新页面,按F5 或者Ctrl + R,于是就会记录到network activity…

也就是记录
页面上的网络请求的详情信息,
从发起网页页面请求Request后分析HTTP请求后得到的各个请求资源信息
(包括状态、资源类型、大小、所用时间、Request和Response等)

在这里插入图片描述
一般第一个记录就是website url对应的web响应
在这里插入图片描述


4.然后点开top250,查看请求头Headers和预览Preview一下top250的 “样子”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到Top 250 Preview“样子(右边)”,和 浏览器下的样子(左边)

是比较相似的

Top 250里面有我们需要的电影列表,页数。

为什么要查看Top 250这个包呢?
因为有时候,请求的url所返回的response里面,并没有,自以为有的,所需要的东西
当没有的时候,就要考虑抓取别的 "Top 250",也就是抓包了
目前看来爬取豆瓣Top250不用抓包,比较简单。
电影列表就在请求的url(https://movie.douban.com/top250)里。

5.分析电影的html标签

有两种定位页面对象(比如网页的图片、文字)的办法:
选中对象,鼠标右键 ——> 检查
在这里插入图片描述

F12,打开开发者工具, 点一个左上角的按钮,再去选中对象
在这里插入图片描述

在这里插入图片描述

6.分析翻页

我复制了一下1~4页,翻页逻辑一目了然,
在这里插入图片描述

我们可以大胆的猜测:

这个start参数值,就是从哪个电影开始显示。


而且不一定要25、25地递增。

下面start=249,直接就返回了最后一部电影
当然,start >= 250的时候就没有电影返回了

在这里插入图片描述

可以发现,每次最多返回25部电影
在这里插入图片描述
在这里插入图片描述
而且 &filter= 是无效参数,可以删掉~

是不是so easy~ ~!!

二、磨刀不误砍柴工,开始码代码

先上代码

import requests
from bs4 import BeautifulSoup as bs
from fake_useragent import UserAgent
import csvdef get_html(url):ua = UserAgent()try:r = requests.get(url,headers={'User-Agent':ua.random}) # ua.random 返回一个随机user-agent。# 如果不加 headers = {...} 返回的Response(响应)就不是200(也就是响应异常)return r.textexcept:print('Request ERROR')def parse_html(url):all_items = []soup = bs(get_html(url),'html.parser')   # 做一碗美丽汤~items = soup.select('.item')   # soup.select()返回一个列表,每个列表元素是一个item标签for i in items:    # 一个i(item) 就是一个数据元素(电影)、有许多数据项(排名、标题、...)rank = i.select_one('em').text      # 排名movie_url = i.select_one('a').get('href')  # 电影详情urlmovie_pic = i.select_one('a img').get('src')   # 电影图片urltitle = i.select_one('.hd >a ').text.replace('\n','').strip()  # 电影标题。去掉换行符、首尾的空格info = i.select_one('.bd').text.replace('\n','').strip() # 导演、主演。去掉换行符、首尾的空格score = i.select_one('.rating_num').text  # 评分try:quote = i.select_one('.inq').text  # 影评except:quote = Noneprint(f'《{title}》没有引用影评')all_items.append(  # 每个被append到all_items里面的,是一个 字典。有如下键值对{'排名':rank,'标题': title,'简介': info,'影评':quote,'电影评分': score,'详情URL':movie_url,'照片URL': movie_pic,})return all_itemsdef save2file(all_items):keys = all_items[0].keys()   # 返回dict_keys类型,其实可以看作列表。形如dict_keys(['排名', '标题', '简介',...])with open('豆瓣TOP250.csv', 'w', newline='', encoding='utf-8') as output_file:dict_writer = csv.DictWriter(output_file, keys)  # 把字典写入CSV 文件# 没有字段名列表的话,DictWriter就无法知道使用哪些键来从字典中检索值,它还使用字段名中的键将第一行写为列名。dict_writer.writeheader()      # 写header,即第一行dict_writer.writerows(all_items)  # 用keys为检索,每一行,写一个item值output_file.close()if __name__ == '__main__':url = 'https://movie.douban.com/top250?start={}'all_items = []  # 用来存所有item字典for i in range(0, 250, 25):print(f'正在爬取{url.format(i)}','')items = parse_html(url.format(i))  # 返回前25名的电影itemsall_items += itemsprint('爬取成功')save2file(all_items)print("爬取结束。")

关于我的代码(大概写一下给小白同学康康~)

首先呢,requests、bs4的用法,边查文档,边写多了,就炉火纯青啦,不成问题。


下面解释一下BeautifulSoup对象的 .select的用法

比如soup.select('.quote')

表示找到所有的 class = quote的标签。
.(小数点) 代表class
返回的是一个列表。(若没找到,就是空列表 [ ]
在这里插入图片描述
之后遍历这个列表。
.text拿的是标签中间的字符串,比如上图就是“王家卫…代表”
.attrs['class']拿的是属性class的属性值,比如上图就是“inq”

同理items = soup.select('.item')

表示找到所有的 class = item的标签。"."(小数点) 代表class
返回的是一个列表。(若没找到,就是空列表)

又比如title = i.select_one('.hd >a ')

表示找每一个i下面的,
满足class = hd所包含的直接子标签,名为a第一个标签。
因为是select_one(),所以返回第一个满足查找条件的标签,
(如果没有找到,就是Nonetype)

成品截图:

在这里插入图片描述


本篇结束

这篇关于开学了,爬一下某瓣电影Top250,挑几部电影康康~的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/535740

相关文章

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

【详细介绍一下GEE】

GEE(Google Earth Engine)是一个强大的云计算平台,它允许用户处理和分析大规模的地球科学数据集,如卫星图像、气候模型输出等。以下是对GEE用法的详细介绍: 一、平台访问与账户设置 访问GEE平台: 用户可以通过访问Google Earth Engine的官方网站来开始使用GEE。 创建账户: 用户需要注册并登录Google账户,然后申请访问GEE平台。申请过程可能需要提

数据预处理与协同过滤推荐算法——从数据清洗到个性化电影推荐

推荐系统在现代应用中占据了重要地位,尤其在电影、音乐等个性化内容推荐中广泛使用。本文将介绍如何使用数据预处理、特征工程以及多种推荐算法(包括协同过滤、基于内容的推荐、混合推荐等)来实现电影推荐系统。通过Pandas、Scikit-learn、TensorFlow等工具,我们将展示如何从数据清洗开始,逐步实现各类推荐算法。  完整项目代码: 基于协同过滤的电影推荐系统 一、数据预处

下一代皮克斯:AI如何融合电影与游戏

故事是人类体验的核心,通过故事我们理解世界、寻找意义并与他人建立联系。技术的进步不断推动着故事叙述的形式,从迪士尼的多平面摄影机到皮克斯的3D图形技术,每一次技术革命都带来了故事叙述的新方式。 游戏:现代叙事的前沿 今天,有两个主要的趋势正在加速下一代叙事公司的诞生: 消费者转向互动媒体:过去三十年间,我们见证了消费者从传统的线性媒体(如电视和电影)向互动媒体(如游戏)的逐步迁移。对于Z世

开学季必看!这5部国漫剧情爽翻了!

转眼又到了开学季,相信很多朋友还没有适应紧张的学习生活,这时候看国漫放松就是一个很好的选择了。今天就给大家推荐5部最近热播的国漫,每部的剧情都能戳中你的爽点,下面就一起来看看吧! 《斗罗大陆2绝世唐门》 看点:魔法校园 纯爱高甜 改编自唐家三少的同名小说,由玄机科技制作,讲述霍雨浩等新一代史莱克七怪的成长故事。相信很多学生党都追过斗罗大陆动画第一部,唐三小舞可谓国漫顶流的男神

这位在做游戏的前电影导演,希望能变着法子讲故事,并给予玩家会心一击

从黎巴嫩到瑞典,从电影人到游戏从业者,这是一位“作者”开发者的冒险 这是又一名瑞典游戏开发者的故事。 区别于大多数安静内向的同行,Josef Fares 因为其张扬的个性而成为为玩家所熟知的开发界网红。他敢在 TGA 直播中脱口而出“F**k Oscar”,敢在开箱危机的风口浪尖为 EA 说话,他创作了两款极具个人风格的独立游戏——讲述兄弟在幻想世界里历险为父亲求解药的《兄弟:双子传说》(Br

做技术的大家可以看一下这些网站,

1   csdn  http://www.csdn.net/ 2. 开源中国  http://www.oschina.net/ 3. 深度开源(有些经验之谈) http://www.open-open.com/ 上面很多东西大家可以学很多。。。。。。 android须知的网址 Android开发者网站可以很好的帮助你,很多的文档也可以通过SDK工具下载。这些文档不仅仅是Javadoc A

大数据开发体系,进来了解一下?

“5G失败、物联网已死、鼓吹大数据无用论”打开手机又是承接今日份的“丧”, 这种丧味十足的帖子我们已经被投喂得太多了 ,还是原来的配方,还是熟悉的味道,说这些话的人,多少显得无聊而耸人听闻。 有这样一句话叫数据重构商业,流量改变未来。不管怎么唱衰,大数据时代已经向我们滚滚而来,早已成为现代社会不可缺少的一部分。 “不参与大数据建设,10年后一定后悔”。 早在几年前,马云就在某次

通义灵码助力高校开学第一课,“包”你满意,新学期加油!

通义灵码作为国内领先的 AI 编码工具,近年来在高校中得到了广泛应用和推广。它不仅帮助大学生更高效地学习编程、提高代码质量,还激发了他们的创新思维,并为未来的职业生涯做好了准备。 通义灵码是什么? 通义灵码是一款基于通义大模型的智能编码助手,可以在你进行编码工作时,为你提供代码实时续写、注释生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、代码问题修复等辅助编码工作的功能

193篇文章暴揍Flink,这个合集你需要关注一下

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多惊喜 前一段时间我写了一篇:《我们在学习Flink的时候,到底在学习什么?》。 基本上把大多数情况下Flink需要学习的点都照顾到了。 然后重点来了,我整理了一个合集放在了CSDN论坛,根据Flink版本发布过程和知识点,收录了网络上写的比较好的文章,基本覆盖了近100%的Flink的知识点。点击文末的【阅读原文】可以跳转,你有必要收藏一