网易首页 > 网易号 > 正文 申请入驻

如何用Python抓取250部豆瓣电影海报?

0
分享至

小朋友们好,大朋友们好!

我是猫妹,一名爱上Python编程的小学生。

关注我,一起趣味学编程!

你知道有个网站叫豆瓣吗?

它是一个社区网站,它以书影音起家,提供关于书籍、电影、音乐等作品的信息,无论描述还是评论都由用户提供,是Web2.0网站中具有特色的一个网站。

网站还提供书影音推荐、线下同城活动、小组话题交流等多种服务功能,它更像一个集品味系统(读书、电影、音乐)、表达系统(我读、我看、我听)和交流系统(同城、小组、友邻)于一体的创新网络服务,一直致力于帮助都市人群发现生活中有用的事物。

猫妹豆瓣用得不多,不过咱们今天要抓取的电影海报来自豆瓣。

如下页面有250部2022年度电影榜单,都是读者朋友推荐的精品。

获取网页源码

通过之前几篇文章的学习,我们知道,在网页上我们看到的是文字、图片、视频等元素。

实际上,这些元素是通过html语法来组织的,比如显示什么内容文字?文字的颜色格式是什么?显示什么图片?图片放在哪里等等。

我们可以通过查看网页的源码,得知网页的html源代码。

电影详细信息就在html代码里,比如《肖申克的救赎》相关信息如下:

第一步先通过Python的Request模块获取网页的源代码:

import requests

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/109.0.0.0 Safari/537.36'

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

result=reponse.text

print(result)

获取单页海报地址

有了网页源代码,接下来就是分析电影相关信息,海报下载链接在哪里。

我们的步骤是:

网页源码->解析电影海报地址->下载海报

我们打开开发者模式,用选择元素工具后,将鼠标放在电影海报的图片上,可以得到其html相关代码。

原来,图片相关信息为:

我们可以通过正则表达式解析源码,获取电影的名称和地址。

import requests

import re

def get_source_code():

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/109.0.0.0 Safari/537.36'

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

result=reponse.text

#print(result)

return result

def get_image_info(result):

movie_title='

movie_image='

title_list=re.findall(movie_title,result)

image_list=re.findall(movie_image,result)

print(title_list)

print(image_list)

if __name__=='__main__':

result=get_source_code()

get_image_info(result)

运行结果:

这里我们用到了Python自带的正则表达式re,它是用来匹配查找筛选内容的。

re.findall():函数返回包含所有匹配项的列表。返回string中所有与pattern相匹配的全部字串,返回形式为数组。

下载单页海报

有了电影海报的地址,保存就很简单了。

测试代码:

import requests

import re

from pathlib import Path

def get_source_code():

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/109.0.0.0 Safari/537.36'

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

result=reponse.text

#print(result)

return result

def get_image_info(result):

movie_title='

movie_image='

title_list=re.findall(movie_title,result)

image_list=re.findall(movie_image,result)

print(title_list)

print(image_list)

file_path = Path('D:/和猫妹学Python/海报')

if not file_path.exists():

file_path.mkdir(parents=True)

for i in range(len(title_list)):

response1 = requests.get(url=image_list[i])

contents = response1.content

image_path = file_path / (title_list[i]+'.jpg')

with open(image_path,'wb') as fp:

fp.write(contents)

if __name__=='__main__':

result=get_source_code()

get_image_info(result)

26行:要保存电影海报的目录文件夹内

27~28:行:如果没有此文件夹,那么创建一个

30行:根据列表获取电影的数量,判断需要下载多少次。每次请求都是电影图片的地址。

33行:用电影名称给电影图片命名。

34~35行:将图片信息contents进行保存。

下载多页海报

我们上面已经抓取了第一页的电影海报图片,共25张。

如何抓取多页呢?

这就需要找找规律啦!

点击页面底部的不同页面,你会发现链接有规律。

啥规律?

https://movie.douban.com/top250?start=(页面-1)*25&filter=

是不是将单页下载海报的代码,将其循环10次就可以啦?

没错!

测试代码:

import requests

import re

from pathlib import Path

def get_source_code(page):

#url = 'https://movie.douban.com/top250'

url=page

headers = {

'User-Agent':

'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'

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

result=reponse.text

#print(result)

return result

def get_image_info(result):

movie_title='

movie_image='

title_list=re.findall(movie_title,result)

image_list=re.findall(movie_image,result)

#print(title_list)

#print(image_list)

file_path = Path('D:/和猫妹学Python/海报')

if not file_path.exists():

file_path.mkdir(parents=True)

for i in range(len(title_list)):

response1 = requests.get(url=image_list[i])

contents = response1.content

image_path = file_path / (title_list[i]+'.jpg')

with open(image_path,'wb') as fp:

fp.write(contents)

print('.',end='')

if __name__=='__main__':

print("豆瓣海报下载中...",end='')

for i in range(10):

url='https://movie.douban.com/top250?start={}&filter='.format(i*25)

result=get_source_code(url)

get_image_info(result)

print("下载完成")

print("和猫妹学Python")

程序运行:

程序下载较慢,如果想下载得快点,可以用上多线程技术,实现快速下载。

如果遇到什么问题,咱们多多交流,共同解决。

猫妹在同名公众号等你,不见不散!

我是猫妹,咱们下次见!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
大呼上当!ATACMS暴揍S-400后,网传印度国防部全面停止购买俄系武器

大呼上当!ATACMS暴揍S-400后,网传印度国防部全面停止购买俄系武器

娱宙观
2024-05-25 14:06:57
机关事业单位的养老金,太让人羡慕了

机关事业单位的养老金,太让人羡慕了

男女那点事儿儿
2024-05-27 07:35:02
64岁毕福剑:定居辽宁小县城,开三轮车,日晒雨淋不怕累

64岁毕福剑:定居辽宁小县城,开三轮车,日晒雨淋不怕累

娱乐八卦木木子
2024-05-28 00:12:04
打懵了?俄先进武器S400连续被击毁,复制版该何去何从

打懵了?俄先进武器S400连续被击毁,复制版该何去何从

爱吃鱼的哆啦A梦
2024-05-26 13:07:22
湖人名宿沃西缅怀比尔-沃顿:一个真正的朋友和导师 我们会想念你

湖人名宿沃西缅怀比尔-沃顿:一个真正的朋友和导师 我们会想念你

直播吧
2024-05-28 08:05:05
他留下?曼晚:曼联正考虑让滕哈赫留任,队内仅4球员为非卖品

他留下?曼晚:曼联正考虑让滕哈赫留任,队内仅4球员为非卖品

直播吧
2024-05-27 22:40:08
长征九号最新进展:12大关键技术已突破,各级发动机均成功热试车

长征九号最新进展:12大关键技术已突破,各级发动机均成功热试车

科普大世界
2024-05-27 16:18:55
乌鲁木齐市北京路拆除“BRT车道”旧标志牌 现全线均为社会车道

乌鲁木齐市北京路拆除“BRT车道”旧标志牌 现全线均为社会车道

小小包工头阿汾
2024-05-28 06:00:43
27+5超巨加盟湖人!詹姆斯表示欢迎,佩林卡封神操作引NBA热议

27+5超巨加盟湖人!詹姆斯表示欢迎,佩林卡封神操作引NBA热议

开心体育站
2024-05-27 23:22:32
艾薇十年传奇谁最耀眼?君岛美绪、波多野结衣等巨星引领风潮

艾薇十年传奇谁最耀眼?君岛美绪、波多野结衣等巨星引领风潮

北风咧
2024-03-07 15:36:09
只打6个赛季,就进历史前10!上帝太偏心,造出东契奇这样的怪物

只打6个赛季,就进历史前10!上帝太偏心,造出东契奇这样的怪物

毒舌NBA
2024-05-26 10:07:00
身价过百亿,坐拥北京一条街,出门私人飞机,京圈内的富婆都有谁

身价过百亿,坐拥北京一条街,出门私人飞机,京圈内的富婆都有谁

娱乐八卦木木子
2024-05-26 21:34:32
台媒:美售台战机快来了,台军飞行员却要走了

台媒:美售台战机快来了,台军飞行员却要走了

参考消息
2024-05-27 11:06:17
四川保安肖基国,撞脸奥巴马,从月薪1500,飙升至出场费5万起

四川保安肖基国,撞脸奥巴马,从月薪1500,飙升至出场费5万起

一度历史观
2024-02-06 12:56:38
4月份车企品牌销量排行,比亚迪超过大众与丰田之和,特斯拉落榜

4月份车企品牌销量排行,比亚迪超过大众与丰田之和,特斯拉落榜

财经老庄
2024-05-25 12:41:53
入编 年薪20万起|中山大学附属第一医院惠亚医院2024年补充招聘

入编 年薪20万起|中山大学附属第一医院惠亚医院2024年补充招聘

华医网
2024-05-28 05:40:15
大名鼎鼎的AMD显卡品牌迪兰恒进彻底死亡!官网过期关闭

大名鼎鼎的AMD显卡品牌迪兰恒进彻底死亡!官网过期关闭

快科技
2024-05-26 20:13:09
汪小菲撒娇和张兰道歉,张兰气没消一脸严肃,但还是接受了连线!

汪小菲撒娇和张兰道歉,张兰气没消一脸严肃,但还是接受了连线!

小咪侃娱圈
2024-05-27 12:00:33
阉割后还能9.4,它依旧封神

阉割后还能9.4,它依旧封神

影探
2024-05-27 13:53:57
与广东男篮没矛盾!沃特斯经纪人:怒批个别媒体恶意造谣

与广东男篮没矛盾!沃特斯经纪人:怒批个别媒体恶意造谣

狼叔评论
2024-05-28 00:49:05
2024-05-28 08:52:49
和猫妹学Python
和猫妹学Python
人生苦短,我用Python
79文章数 95关注度
往期回顾 全部

科技要闻

刘强东为何此时重新定义“兄弟”?

头条要闻

ICC检察官解释为何非要逮捕以色列总理 打了一个比方

头条要闻

ICC检察官解释为何非要逮捕以色列总理 打了一个比方

体育要闻

阿根廷一代神锋,击碎了沙特的金元足球梦

娱乐要闻

赵丽颖辟谣新恋情,林更新晒照显暧昧

财经要闻

郑裕彤家族撑腰 小赢科技撮合放贷大赚

汽车要闻

硬又没那么硬?体验为满足更多人需求的深蓝G318

态度原创

旅游
房产
亲子
本地
公开课

旅游要闻

“厕评”?听说去阿勒泰旅游的人膀胱快炸了?

房产要闻

大量宅地爆发上架!海口2大片区旧改,又要火力全开!

亲子要闻

女儿要给妈妈分享冰淇淋,自己小口小口地吃着,挖了一大坨给妈妈

本地新闻

2024沈阳皇姑第二届半程马拉松

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版