返回介绍

18.3 创建豆瓣爬虫

发布于 2024-01-26 22:39:51 字数 2881 浏览 0 评论 0 收藏 0

从本节开始以豆瓣爬虫为例讲解PySpider的用法。豆瓣爬虫的目标是爬取豆瓣电影的详细信息。接下来我们在PySpider的WebUI界面中创建doubanMovie项目,点击Create按钮,在弹出的对话框中输入doubanMovie,如图18-3所示。

图18-3 创建doubanMovie

直接点击Create,即可实现项目创建,直接跳转到项目调试界面,如图18-4所示。

图18-4 项目调试区

从图18-4中,我们可以看到整个页面分为两栏,左侧是爬取页面预览区域,右侧是代码调试区域。下面对这两个区域进行说明。

左侧区域:

·代码区域:请求所对应的JSON变量。在PySpider中,每个请求都有与之对应的JSON变量,变量中包括回调函数、方法名、请求链接、请求数据等。

·代码区域右上角的Run:点击Run按钮,就会执行这个请求,可以在代码区域显示请求的结果,有可能是异常信息。

·底部enable css selector helper选项:抓取页面之后,点击此按钮,可以方便地获取页面中某个元素的CSS选择表达式。

·底部web选项:抓取页面的实时预览图。

·底部html选项:抓取页面的HTML代码。

·底部follows选项:如果当前抓取方法中又产生了新的爬取请求,那么新产生的请求就会出现在follows里。

·底部messages选项:爬取过程中输出的一些信息。

右侧区域:

·整个区域属于编码区域,代码编写完成后点击右上角的Save按钮进行保存。

·上端WebDAV Mod选项用于打开调试模式,使左侧最大化,便于观察调试过程。

接下来根据爬取目标“豆瓣电影”来分析抽取数据的方式。首先来到豆瓣电影的首页,发现从首页开始爬,并不能包含所有的电影,因此选择抓取分类下的所有标签页的电影,链接为https://movie.douban.com/tag/ ,如图18-5所示。

图18-5 豆瓣电影

这时候将https://movie.douban.com/tag/ 填到右侧代码区onstart方法中,点击Save保存。代码如下:

  @every(minutes=24 * 60)
  def on_start(self):
     self.crawl('http://movie.douban.com/tag/', callback=self.index_page)

on_start方法说明:

·self.crawl告诉PySpider抓取指定页面,然后使用callback函数对结果进行解析。

·@every修饰器的括号中是时间,表示on_start每天会执行一次,来抓取最新的电影。

这个时候点击Run按钮生成第一个请求,新的请求可以在follows中查看,并点击请求右侧的箭头,开始执行,如图18-6所示。

图18-6 发送请求

请求发送成功后,切换到web选项可以预览实时的页面,同时follows又根据callback中指定的index_page方法产生了新的请求,如图18-7所示。

我们需要从响应页面中提取各种分类的链接,然后进入电影列表页,比如https://movie.douban.com/tag/ 爱情,如图18-8所示。

最后再从电影列表页提取每一部影片的链接,然后通过链接进入电影详情页,比如点击《七月与安生》这部电影,如图18-9所示。提取其中的标题、导演、主演、类型和评分等信息。

图18-7 页面预览

图18-8 电影列表页

图18-9 电影详情页

以上就是提取电影详情的逻辑步骤,但是这一切都源于对页面数据的提取,必然要提到选择器。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文