影视网站源码(电影天堂的最新电影爬取)

一、爬取目标二、设计爬虫程序确定爬取入口爬取思路设计爬虫架构代码实现三、爬取结果一、爬取目标本次爬取的站点选择电影天堂,网址是: www.dytt8.net。爬取内容是整个站点的所有电影信息,包括电影名称,导演、主演、下载地址等。具体抓取信息如下图所示:二、设计爬虫程序2.1 确定爬取入口电影天堂里面的电影数目成千上万,电影类型也是让人眼花缭乱。我们为了保证爬取的电影信息不重复, 所以要确定一个爬取方向。目前这情况真让人无从下手。但是,我们点击主页中的【最新电影】选项,跳进一个新的页面。蓦然有种柳暗花明又一村的感觉。由图可知道,电影天堂有 5 个电影栏目,分别为最新电影、日韩电影、欧美电影、国内电影、综合电影。每个栏目又有一定数量的分页,每个分页有 25 条电影信息。那么程序的入口可以有 5 个 url 地址。这 5 个地址分别对应每个栏目的首页链接。2.2 爬取思路知道爬取入口,后面的工作就容易多了。我通过测试发现这几个栏目除了页面的 url 地址不一样之外,其他例如提取信息的 xpath 路径是一样的。因此,我把 5 个栏目当做 1 个类,再该类进行遍历爬取。我这里“最新电影”为例说明爬取思路。1)请求栏目的首页来获取到分页的总数,以及推测出每个分页的 url 地址;2)将获取到的分页 url 存放到名为 floorQueue 队列中;3)从 floorQueue 中依次取出分页 url,然后利用多线程发起请求;4)将获取到的电影页面 url 存入到名为 middleQueue 的队列;5)从 middleQueue 中依次取出电影页面 url,再利用多线程发起请求;6)将请求结果使用 Xpath 解析并提取所需的电影信息;7)将爬取到的电影信息存到名为 contentQueue 队列中;8)从 contentQueue 队列中依次取出电影信息,然后存到数据库中。2.3 设计爬虫架构根据爬取思路,我设计出爬虫架构。如下图所示:2.4 代码实现主要阐述几个重要的类的代码main 类主要工作两个:第一,实例化出一个dytt8Moive对象,然后开始爬取信息。第二,等爬取结束,将数据插入到数据库中。处理爬虫的逻辑代码如下:创建数据库以及表,接着再把电影信息插入到数据库的代码如下:TaskQueue 类维护 floorQueue、middleQueue、contentQueue 三个队列的管理类。之所以选择队列的数据结构,是因为爬虫程序需要用到多线程,队列能够保证线程安全。dytt8Moive 类dytt8Moive 类是本程序的主心骨。程序最初的爬取目标是 5 个电影栏目,但是目前只现实了爬取最新栏目。如果你想爬取全部栏目电影,只需对 dytt8Moive 稍微改造下即可。getMoiveInforms 方法是主要负责解析电影信息节点并将其封装成字典。在代码中,你看到 Xpath 的路径表达式不止一条。因为电影天堂的电影详情页面的排版参差不齐,所以单单一条内容提取表达式、海报和影片截图表达式、下载地址表达式远远无法满足。选择字典类型作为存储电影信息的数据结构,也是自己爬坑之后才决定的。这算是该站点另一个坑人的地方。电影详情页中有些内容节点是没有,例如类型、豆瓣评分,所以无法使用列表按顺序保存。2爬取结果我这里展示自己爬取最新栏目中 4000 多条数据中前面部分数据。附:源代码地址(https://github.com/wzjgn/MoivesSpider)


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/46511/