18.3 创建豆瓣爬虫
从本节开始以豆瓣爬虫为例讲解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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论