初步了解爬虫框架pyspider

本文只对pyspider的简单使用作一介绍,有关pyspider的详细使用请看:点击打开链接。

        在开始之前,我们先来看一下pyspider的架构:pyspider的架构主要分为Scheduler(调度器),Fetcher(抓取器),Processer(处理器)3个部分,整个爬取过程受到Monitor(监控器)的监控,抓取的结果被Result Worker(结果处理器)处理,Scheduler发起任务调度,Fetcher负责抓取网页内容,Processer负责解析网页内容,将生成的提取结果输出保存。

1.安装:pip install pyspider

验证安装:pyspider all,安装完成之后,控制台会有如下的输出:

初步了解爬虫框架pyspider_第1张图片

上面的命令意思就是启动pyspider的所有组件,可以看到最后一行输出的是webui界面在5000端口运行的意思,这时我们打开本地的5000端口(http://localhost:5000),看到的就是pyspider的webui界面,如图:

初步了解爬虫框架pyspider_第2张图片

2.点击create,创建一个新的项目,名字随便取,开始的链接写你要抓取的网页的链接,完成之后进入如图的页面:


初步了解爬虫框架pyspider_第3张图片

        可以看到pyspider的项目编辑和调试页面:如上图,左侧就是代码的调试页面,点击左侧上角的run单步调试爬虫程序,在左侧下半部分可以预览当前的爬取页面。右侧是代码编辑页面,可以直接编辑代码和保存代码。而且,当你创建成功一个项目的时候,pyspider自己会帮我们生成一段代码,如下图(我填写的项目URL是百度):

from pyspider.libs.base_handler import *


class Handler(BaseHandler):
    crawl_config = {
    }

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

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        for each in response.doc('a[href^="http"]').items():
            self.crawl(each.attr.href, callback=self.detail_page)

    @config(priority=2)
    def detail_page(self, response):
        return {
            "url": response.url,
            "title": response.doc('title').text(),
        }

3.分析代码逻辑:

        这里的handler就是pyspider爬虫的主类,我们可以在此处定义爬取,解析存储的逻辑。整个爬虫的功能只需要一个Handler即可完成。接下来,我们可以看到一个crawl_config属性。我们可以将本项目中的所有爬取配置统一定义在这里,配置之后全局生效。然后,on_start()方法是爬取入口,该方法通过调取crawl()方法即可新建一个爬取请求:,第一个参数是爬取的url,它会自动的替换成为我们定义的url,还有一个参数是callback,指定了这个页面爬取成功后会使用哪个方法进行解析,代码中指定为index_page()。index_page()方法解析了上一个请求的页面的所有链接,然后将链接遍历,再次调用crawl()方法生成了新的爬取请求,同时指定了callback为detail_page(),意思是说这些页面爬取成功后就调用了detail_page()方法。detail_page()抓取的是详情页的信息,就不会生成新的请求,只对上一步得到的新的爬取请求做解析,解析之后将结果以字典的形式返回。

        通过对代码的分析,我们可以知道,当我们爬取一个网页的时候,我们可以分为以下几个步骤来进行:第一步,爬取首页,对应的就是on_start()方法,之后爬取首页中的链接,对应的是index_page()方法,最后则是解析详情页,提取出我们所需要的信息,对应的是detail_page()方法。



你可能感兴趣的:(python爬虫案例)