Python之Scrapy爬虫框架

Scrapy框架

      Scrapy是一个高级的爬虫框架,它不仅包括了爬虫的特征,还可以方便地将爬虫数据保存到CSV、Json等文件中。
      Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
      Scrapy 使用了 Twisted异步网络库来处理网络通讯。
      整体架构大致如下:

Scrapy主要包括了以下组件:
  • 引擎(Scrapy)
    用来处理整个系统的数据流, 触发事务(框架核心)
  • 调度器(Scheduler)
    用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
  • 下载器(Downloader)
    用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
  • 爬虫(Spiders)
    爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
  • 项目管道(Pipeline)
    负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
  • 下载器中间件(Downloader Middlewares)
    位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
  • 爬虫中间件(Spider Middlewares)
    介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。
  • 调度中间件(Scheduler Middewares)
    介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

Scrapy运行流程

Scrapy运行流程大概如下:

      1引擎从调度器中取出一个链接(URL)用于接下来的抓取;

      2引擎把URL封装成一个请求(Request)传给下载器;

      3下载器把资源下载下来,并封装成应答包(Response);

      4爬虫解析Response;

      5解析出实体(Item),则交给实体管道进行进一步的处理;

      6)解析出的是链接(URL),则把URL交给调度器等待抓取。


Scrapy的安装

      首先在cmd命令行中安装Scrapy

pip install scrapy
      在Windows安装是可能会出现错误,提示找不到Microsoft Visual C++,需要安装Twisted 。
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

在下载Twisted之前,先要确认你Python的版本,比如我的版本为Python3.6.5, 就选择cp36的;电脑
系统 是64位,就选择win amd64的。

        Twisted的安装:

pip install E:\Downloads\Twisted-18.4.0-cp36-cp36m-win_amd64.whl

      最后再安装Scrapy。

Scrapy常用命令

Scarpy常用命令
命令 说明 格式
startproject 创建一个新工程 Scrapy startproject 项目名
genspider 创建一个爬虫 Scrapy genspider 项目名 域名
settings 获取爬虫配置信息 Scrapy settings 
crawl 运行一个爬虫 Scrapy crawl 项目名
list 列出工程所有爬虫 Scrapy list
shell 启动URL调试命令行 Scrapy shell [url]
edit 编辑爬虫文件 Scrapy edit 文件名
注意:一般创建爬虫文件时,以网站域名命名

项目创建

项目创建步骤:

       步骤1:建立一个Scrapy爬虫工程
             选取一个目录(E:\PyCodes\),然后执行如下命令:
E:\PyCodes\scrapy startproject myproject
      步骤2:在工程中产生一个Scrapy爬虫
             进入工程目录(E:\PyCodes\myproject),然后执行如下命令:
E:\PyCodes\myproject\scrapy genspider mydome mydome.com
      步骤3:配置产生的spider爬虫
            (1)初始URL地址
            (2)获取页面后的解析方式
# -*- coding:utf-8 -*-
import scrapy

class MydemoSpider(scrapy.Spider):
    name = "mydemo"
    allowd_domains = ["http://mydome.com"]
    start_url = ['http://python123.io/ws/dome.html']
    
    def parse(self, response):
        pass
      步骤4:运行爬虫,获取网页
             mydemo爬虫被执行,捕获页面存储在mydemo.html
             在命令行下,执行如下命令:
E:\PyCodes\myproject\scrapy crawl mydome

生成的项目结构:
myproject/                 -------外层目录
    scrapy.cfg             -------项目的配置文件
    myproject/             -------该项目的python模块。之后您将在此加入代码。
        __init__.py        -------初始化脚本
        items.py           -------item代码模块(继承类)
        middlewares.py     -------Middlewares代码模板(继承类)
        pipelines.py       -------Pipelines代码模板(继承类)
        settings.py        -------Scrapy爬虫的配置文件
        
        spiders/           -------Spiders代码模板目录(继承类)
            __init__.py    -------初始文件,无需修改
            __init__.py    -------缓存目录,无需修改


猜你喜欢

转载自blog.csdn.net/qq_38328378/article/details/80756270