• 网络爬虫之:Scrapy使用详解(二)scrapy小爬虫诞生记


    一、前言:

    • 前面一章我们讲述了Scrapy爬虫安装的的过程以及独立空间的创建。
    • 本次我们的目标是没有蛀牙!
    • 本次我们的目标是没有蛀牙!
    • 本次我们的目标是没有蛀牙!
    • 好吧,不要打我,我们的目标是了解scrapy项目的结构及通过一个小爬虫来验证其到底有多好用!

    二、scrapy项目结构

    • 首先,我们先执行scrapy命令创建一个scrapy工程,看下工程都包裹哪几部分

    • Ok,我们创建个工程名为scrapydemo的项目,cd到你喜欢的目录下,然后执行该指令,如果你想在virtualenv开发环境上创建,记得先进入virtualenv的环境哦,还不清楚的可以点击Scrapy使用详解(一)

        scrapy startproject scrapydemo
    • 执行完之后,你会看到如下的目录结构

        scrapydemo/
            scrapy.cfg           
            scrapydemo/            
                  __init__.py
                  items.py         
                  pipelines.py      
                  settings.py       
                  spiders/         
                        __init__.py
    • 文件作用如下: 1、scrapy.cfg 项目配置文件 2、scrapydemo/ 目录下存放的就是我们工程相关的python代码文件,一般代码都在里面了 3、items.py 定义了帶抓取的数据模型,可以理解为java 里面的数据bean 4、pipelines.py 负责处理scrapy爬取的数据,我们下载解析了目标页面之后,数据就会被送往pipelines进行处理,pipelines.py文件中def process_item方法来接收处理数据 5、settings.py 爬虫的配置文件,如:用户代理、延迟爬取等配置信息就是在这里面配置了 6、spiders/ 该目录就是我们实际编写代码的目录了

    三、创建爬虫

    • OK,结构我们大体了解了,接下来我们用scrapy提供的模版生成一个爬取拉钩网的模版爬虫看下 scrapy genspider spiderLagou https://www.lagou.com --template=crawl

    • 哈哈,网上收集的图,做了点小加工,scrapy的爬取流程如下图所示:1-》2-》3-》4-》1.....如此循环 scrapy.png

    • 引擎(Scrapy Engine),用来处理整个系统的数据流处理,触发事务。

    • 调度器(Scheduler),用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。

    • 下载器(Downloader),用于下载网页内容,并将网页内容返回给蜘蛛。

    • 蜘蛛(Spiders),蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。

    • 项目管道(Item Pipeline),负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清洗、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。

    • 下载器中间件(Downloader Middlewares),位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。

    • 蜘蛛中间件(Spider Middlewares),介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。

    • 调度中间件(Scheduler Middlewares),介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

    相关阅读

  • 相关阅读:
    牛客网 二叉树的镜像 JAVA
    牛客网 反转链表 JAVA
    牛客网 调整数组顺序使奇数位于偶数前面 JAVA
    Integer to Roman LeetCode Java
    Valid Number leetcode java
    Longest Common Prefix
    Wildcard Matching leetcode java
    Regular Expression Matching
    Longest Palindromic Substring
    Add Binary LeetCode Java
  • 原文地址:https://www.cnblogs.com/cnblogzaizai/p/11570606.html
Copyright © 2020-2023  润新知