网络爬虫——初识scrapy以及入门小例子

一、网页有关知识

  1. http请求有两种
    get请求
    地址栏输入的请求
    参数直接放在url后面
    (参数长度有限制,安全性较低)
    post请求
    先建立连接,数据后发过去
    数据放在请求体里面
    (对数据长度没有限制,安全性较高)

  2. 响应码
    200 --成功
    300 --重定向
    400 --网页找不到
    500 --服务器错误

二、Scrapy

  1. 简介
    scrapy是用python实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。
    scrapy常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
    通常我们可以很简单的通过scrapy框架实现一个爬虫,抓取指定网站的内容或图片。
    在这里插入图片描述
    Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

    Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

    Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

    Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器).

    Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。

    Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

    Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

  2. 制作scrapy爬虫的步骤:
    1.新建项目(scrapy startproject xxx):创建新的爬虫项目
    2.明确目标(编写items.py):明确抓取的目标
    3.制作爬虫(spiders/xxxspider.py):制作爬虫开始爬取网页
    4.存储内容(pipelines.py):设计管道存储爬取内容

  3. 小例子
    (1)新建项目
    在这里插入图片描述
    其中, mySpider 为项目名称,可以看到将会创建一个 mySpider 文件夹,目录结构大致如下(test.py是后来添加的):
    在这里插入图片描述
    这些文件分别是:
    scrapy.cfg: 项目的配置文件。
    mySpider/: 项目的Python模块,将会从这里引用代码。
    mySpider/items.py: 项目的目标文件。
    mySpider/pipelines.py: 项目的管道文件。
    mySpider/settings.py: 项目的设置文件。
    mySpider/spiders/: 存储爬虫代码目录。

    (2)在test.py中添加

    import scrapy
    
    
    # 定义网络爬虫类
    class ItcastSpider(scrapy.Spider):
        # 每个爬虫必须要有一个名字
        name = "test"
        url = "https://www.jd.com/"
    
        # 入口方法,当爬虫启动后会先执行这个方法
        def start_requests(self):
            yield scrapy.Request(url=self.url, callback=self.parse)
    
        def parse(self, response):
            print(response.text)
    

    (3)在__init__.py中添加(注意是二级目录下的文件)

    from scrapy import cmdline
    
    # 指定名字启动爬虫
    cmdline.execute("scrapy crawl test".split())
    

    (4)执行__init__.py
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值