欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

5分钟爬虫教程:如何用 Python 爬一些微电影?

程序员文章站 2022-03-07 08:31:17
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 目 标 以国内微电影活跃度最高的社区,「新片场」为例,爬取站内所有的高清电影信息保存到 MongoDB数据库,并使用异步函数下载到本地。 准 备 工 作 首先,需要下载并配置 ......
5分钟爬虫教程:如何用 Python 爬一些微电影?

 

 

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

目 标

以国内微电影活跃度最高的社区,「新片场」为例,爬取站内所有的高清电影信息保存到 mongodb数据库,并使用异步函数下载到本地。

准 备 工 作

首先,需要下载并配置好 mongodb 数据库,并安装「mongoengine」库。

由于下载文件是一个 io 密集型操作,这里用到了协程搭配异部请求,需要安装「aiohttp」 库。

 

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

分 析 思 路

首先我们打开新片场的影视作品首页,发现默认是按热门度排序的。

 

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

由于页面元素比较简单,使用「xpath」可以很快的定位到每一条影片的基本数据,包含「影片名称、类型、播放量、点赞量、封面图」等。

 

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

通过分析,可以发现影片的播放地址中的变量就是影片的 id,被放置在 li 标签的「data-articleid」属性下。

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

最后就是要获取到影片的下载地址。

当我们使用 chrome 插件「toggle javascript」禁用 js 后,发现影片没法正常播放,说明影片播放页面关键数据是动态加载的。

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

打开 network tab,刷新当前页面。

 

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

通过观察,发现页面的部分关键数据是通过下面的一个地址发送的 get 请求。

另外,请求地址中包含的一个动态字符串「5c4a8377173ce」,隐藏于源码中的js 模块中。

 

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

这里可以通过正则表达式匹配到「vid」后面的字符串,就可以组装成我们需要的地址,通过这个地址就可以获取影片的下载地址。

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

获取到数据之后,定义好一个 model,然后就可以插入到数据库中了。

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

 

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

待爬取到的影片数据之后,就可以使用「asyncio + aiohttp」异步函数下载影片数据到本地。

 

5分钟爬虫教程:如何用 Python 爬一些微电影?

 

喝一杯咖啡回来,python 君已经将几千部微电影下载到本地了。

5分钟爬虫教程:如何用 Python 爬一些微电影?