Scrapy基本介绍的学习(一)

Scrapy爬虫框架

Scrapy是使用Twisted这个异步网络库来处理网络通讯,架构清晰,并包含了各种中间件接口,可以灵活地完成各种需求。

Scrapy框架
  • Engine(引擎):负责控制数据流在系统的所有组件中流动,并在想对应动作发生时触发事件

  • Scheduler(调度器):调度器从引擎接收Request并将它们入队,以便之后的引擎请求request时提供给引擎

  • Downloader(下载):负责获取页面的数据并提供给引擎,而后提供给Spider

  • Spider:是scrapy用户编写用于分析response并提取item或额外跟进的URL的类,每一个Spider负责处理一个特定网站

  • Item Pipeline:Item Pipeline负责处理被Spider提取出来的Item。典型的处理有清理验证及持久化

    • Downloader middlewares(下载器中间件):Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理Downloader传递给引擎的Response。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能
    • Spider middlewares(Spider中间件):Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理Spider的输入(response)和输出(Item及Requests),其提供了一个简便的机制,通过插入自定义代码来或者Scrapy功能
Scrapy工作流程
  • 第一步:引擎打开一个网站(open web),找到处理该网站的Spider并向该Spider请求第一要爬取的URL

  • 第二步:引擎从Spider中获取第一个要爬取的URL并通过Scheduler(调度器)以Request进行调度

  • 第三步:引擎向调度器请求下一个要爬取的URL。

  • 第四步:调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给Downloader(下载器)。

  • 第五步:一旦页面下载完毕,Downloader(下载器)生成一个该页面得Response.并将其通过Downloader middlewares(下载中间件)(返回(response)方向)发送给引擎.

  • 第六步:Engine(引擎)从下载器中接收到Response并通过Spider中间件(输入方向)发给Spider处理。

  • 第七步:Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。

  • 第八步:引擎讲(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器。

  • 第九步:(从第二步)重复直到调度器中没有跟多的Request,引擎关闭该网站。

Scrapy的基本文件目录
  • scrapy.cfg: 项目部署文件

  • cnblogSpider/:该项目的Python模块,之后可以在次加入代码

    • items.py: 项目中的Item文件
    • pipelines.py: 项目中的Pipelines文件
    • settings.py: 项目的配置文件
    • spiders/:放置Spider代码的目录
创建第一个Scrapy项目
  • 创建一个Scrapy项目指令在shell运行scrapy startproject 项目名称
    • 就会产生上面的项目文件目录
      列如:创建一个test项目在这里插入图片描述
  • 创建一个爬虫项目指令在shell运行scrapy genspider 爬虫名字 "爬取网站的url"
    • 就会在spiders目录下生成爬虫项目,spiders里面的爬虫项目代码会如下:
      列如:在这里插入图片描述
import scrapy
class CnblogsSpoder(scrapy.Spider):
    a
    name = "创建时候的爬虫名字"   
    allowed_domains = ["创建时候的爬取网站的地址url"]  # 也就是总url,防止往别的网站上爬取注意点是网站不是页面 
	start_urls = ["爬取页面的地址"]  # 这个是爬取页面的url列表

    def parse(self, response):
        '''实现网页的解析'''
        pass
Scrapy的选择器

Scrapy有自己的一套数据提取机制。就因为它们通过特定的XPath或者CSS表达式来选择HTML文件中的某个部分。也就是构建在lxml库之上,这也是意味着它们在速度和解析准确性上非常相似,或者使用BeautifulSoup包进行解析

  • Selector的用法四个基本的方法
    • xpath(query):传入XPath表达式query,返回该表达式所对应的所有节点的selector list列表
    • css(query):传入CSS表达式query,返回该表达式所对应的的所有节点的selector list列表
    • extract():序列化该节点为Unicode字符串并返回list列表
    • re(regex):根据传入的正则表达式对数据进行提取,返回Unicode字符串.regex可以是一个以编译的正则表达式,也是将被re.compile(regex)编译为正则表达是的字符串.
Scrapy数据保存成文件
  • Scrapy运行项目的指令在shell中输入scrapy crawl 爬虫项目名字

    • 注意点,爬虫项目名就是上面的代码中name。当初创建爬虫时候指令定义的爬虫名字
  • 保存成json文件scrapy crawl 爬虫名字 -o 文件名.json

  • 保存成jl文件scrapy crawl 爬虫名字 -o 文件名.jl

  • 保存成csv文件scrapy crawl 爬虫名字 -o 文件名.csv

  • 保存成xml文件scrapy crawl 爬虫名字 -o 文件名.xm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值