用 Python 爬取豆瓣电影海报

伪君子

读完需要

9

分钟

速读仅需 4 分钟

0 前言

之前写过一篇

用 Python 爬取豆瓣上的图片

,那今天就来写一下爬取豆瓣上的电影海报,算是姐妹篇。

1 环境说明

PyCharm 安装第三方库PyCharm 安装第三方库

还需要下载和配置 ChromeDriver,可以看看这篇文章里面的内容。

2 代码

代码不算多,为了能解释清楚,所以也是按顺序分开来,用的时候按顺序复制就好。

先导入要用的库

query 是查询,在代码里的意思是想要爬取的人的名字,随意修改。

path 这个是可以随意修改的,可以把 path = os.getcwd() 这一句注释,然后下面那一句注释掉。path = os.getcwd() 的作用是获得当前文件的路径,然后把这个 .py 文件的路径赋值给 path。

path = 'C:/Users/ASUS/Desktop/测试' 的意思是一样的,把后面这个路径赋给 path,如果用这个的话,记得修改成自己想要的路径。两个语句只能选择一个,另一个需要注释掉,不然程序会把最后一个赋值语句的值赋给 path。

picpath 就是图片所在的目录,接下来就是要判断一下这个目录是否创建了,如果没有创建,那就创建。

这里是下载图片的 download 函数,传入的 src 是图片的链接,传入的 id 是图片的名称,图片的完整名就是图片对应的 id 再加上 .jpg。

dir 就是图片的路径,先是请求图片,如果遇到网络问题导致请求不到,那么就捕获 requests 的 ConnectionError 异常。如果能够请求到,那就打开以 wb 也就是二进制写模式打开图片,图片的路径就是上面说到的dir 。打开之后就把请求到的图片的内容写入,然后关闭。

这里是关于 ChromeDriver 的部分,需要下载和配置 ChromeDriver,可以看看这篇文章里面的内容,里面有提及到。

,意思是从 0 开始到 75,每一个间隔是 15,例如,0、15、30、45、60、75,这里要说明的是,90 是不算在内的。

6*15 是因为王祖贤的电影海报只有 6 页,6 可以改成 10,最多就是程序运行多一会,不会有太多的影响。

对提取出来的 src 进行替换链接,s_ratio_celebrity 和 s_ratio_poster 都是小图,替换成 l 之后就是大图。webp 替换成 jpg,方便下载之后查看图片。

下载完成后输出一个『下载完成』,然后关闭浏览器。

3 补充说明

3.1 url 为什么是这个?

先去豆瓣电影那搜索一下王祖贤,把每一页的链接都看一遍。

https://movie.douban.com/

看完后应该就理解了。

3.2 src_xpath 、title_xpath 哪来的

首先,先下载一个谷歌浏览器扩展程序,名字叫『XPath Helper』,不会下载可以看我之前写的教程。

安装完成后点击 XPath Helper 的图标就能显示和隐藏 XPath Helper 的界面,也可以使用快捷键 Ctrl+Shift+X 显示和隐藏 XPath Helper 的界面。

把 XPath 黏贴到 QUERY 框内就能看到这个 XPath 对应的内容。

当然,也可以按住 Ctrl+Shift,然后移动鼠标来查看 XPath.

浏览器复制出来的 XPath 和 XPath Helper 找到的 XPath 是有区别的,建议是使用 XPath Helper 找到的 XPath.

src_xpath 和 title_xpath 都是一步步试出来的。(这里是极客时间里《数据分析实战45讲》课程的作者陈旸试出来的)

3.3 结果

下载后去查看图片,如果看到下图中圈出来的图片,这不说明程序出问题,这只是豆瓣没有这个电影的海报。

4 说明

本文和本文的姐妹篇都是根据极客时间里《数据分析实战45讲》的其中一讲的内容展开写写的,需要说明的是,通过下面这个二维码购买课程,我有 6 元返利。

题图:Photo by Pablo Merchán Montes on Unsplash

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190214A1ABEF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券