电影天堂的最新电影爬取实战含源码(Git

2018-06-29 00:12

  本次爬取的站点选择电影天堂,网址是: 。爬取内容是整个站点的所有电影信息,包括电影名称,导演、主演、下载地址等。具体抓取信息如下图所示:

  电影天堂里面的电影数目成千上万,电影类型也是让人眼花缭乱。我们为了爬取的电影信息不重复, 所以要确定一个爬取方向。目前这情况真让人无从下手。但是,我们点击主页中的【最新电影】选项,跳进一个新的页面。蓦然有种柳暗花明又一村的感觉。

  由图可知道,电影天堂有 5 个电影栏目,分别为最新电影、日韩电影、欧美电影、国内电影、综合电影。每个栏目又有一定数量的分页,每个分页有 25 条电影信息。那么程序的入口可以有 5 个 url 地址。这 5 个地址分别对应每个栏目的首页链接。

  知道爬取入口,后面的工作就容易多了。我通过测试发现这几个栏目除了页面的 url 地址不一样之外,其他例如提取信息的 xpath 径是一样的。因此,我把 5 个栏目当做 1 个类,再该类进行遍历爬取。

  1)请求栏目的首页来获取到分页的总数,以及推测出每个分页的 url 地址;

  5)从 middleQueue 中依次取出电影页面 url,再利用多线)将请求结果使用 Xpath 解析并提取所需的电影信息;

  8)从 contentQueue 队列中依次取出电影信息,然后存到数据库中。

  主要工作两个:第一,实例化出一个dytt8Moive对象,然后开始爬取信息。第二,等爬取结束,将数据插入到数据库中。

   floorQueue、middleQueue、contentQueue 三个队列的管理类。之所以选择队列的数据结构,是因为爬虫程序需要用到多线程,队列能够线程安全。

  dytt8Moive 类是本程序的主心骨。程序最初的爬取目标是 5 个电影栏目,但是目前只现实了爬取最新栏目。如果你想爬取全部栏目电影,只需对 dytt8Moive 稍微下即可。

  选择字典类型作为存储电影信息的数据结构,也是自己爬坑之后才决定的。这算是该站点另一个的地方。电影详情页中有些内容节点是没有,例如类型、豆瓣评分,所以无法使用列表按顺序保存。