Scrapy基础 第二节:Scrapy版的Hello World

第二节:Scrapy版的Hello World

前置知识:

  • 掌握Python的基础知识
  • 对爬虫基础有一定了解

说明: 运行环境

Win10,Python3 64位

目录:

本节演示如何建立一个scrapy项目和观察数据的流转过程。

这里以访问我的博客为例

https://blog.csdn.net/mist99

1 创建项目

scrapy stratproject HelloScrapy

在这里插入图片描述

工程创建完成了,我们可以列出目录树

tree HelloScrapy /f
在这里插入图片描述

items负责数据模型的建立,类似于实体类。
middlewares.py自己定义的中间件。
pipelines.py负责对spider返回数据的处理。
settings.py负责对整个爬虫的配置。
spiders 目录 负责存放继承自scrapy的爬虫类。
scrapy.cfg scrapy基础配置

2 编写爬虫类

进入目录,创建一个爬虫spider,取名为MyblogSpider

cd HelloScrapy

命令格式

scrapy genspider [options]

在这里插入图片描述

这是和我们就能看到spiders目录下多了一个 MyblogSpider.py 文件,这就是我们编写代码的地方

打开 MyblogSpider.py 可以看到代码模版
我们输入的 name就作为了爬虫名字,domain作为开始url,这里start_urls里如果有重复的http头就修改一下
然后我们在parse函数里再加上一句打印日志,这样一个scrapy版的Hello world就好了

# -*- coding: utf-8 -*-
import scrapy

class MyblogspiderSpider(scrapy.Spider):
    name = 'MyblogSpider'
    allowed_domains = ['blog.csdn.net']
    start_urls = ['https://blog.csdn.net/mist99/']

    def parse(self, response):
          print("*************** Hello Scrapy ********************")

然后我们可以在控制台直接运行这个爬虫:

scrapy crawl MyblogSpider

然后就能看到抓取网页成功的200标识,然后是parser里面我们刚才打印的日志,具体解析页面就以后再说。
在这里插入图片描述

这样我们的Hello World就执行成功了,虽然看起来有点莫名,这当然是因为scrapy中各个组件基类已经实现了。

3 Scrapy组件运行过程

从项目目录我们可以看到,工程中有item、spider、middleware、pipline、settings等一系列文件,那么在我们hello world项目运行中,它们是否都参与了项目过程呢,下面我们再增加一些日志来看
1)在item里面打开注释定义

class HelloscrapyItem(scrapy.Item):
    # define the fields for your item here like:
    print("【步骤】Item 定义结构")
    name = scrapy.Field()

2)在MyblogSpider中重载一下页面请求的函数,再添加一些注释

# -*- coding: utf-8 -*-
import scrapy
from scrapy import Request
from HelloScrapy.items import HelloscrapyItem

class MyblogspiderSpider(scrapy.Spider):
    name = 'MyblogSpider'
    allowed_domains = ['blog.csdn.net']
    start_urls = ['https://blog.csdn.net/mist99/']

    # 页面请求
    def start_requests(self):
        print("【步骤】SinaSpider::start_requests页面请求 ")
        yield Request(self.start_urls[0])

    def parse(self, response):
        print("*************** Hello Scrapy ********************")
        print("【步骤】SinaSpider::parse分析页面 ")

        item = HelloscrapyItem()
        item["name"] = "阿丹的彩蛋"

        yield item

3)在 middlewares.py 中添加日志

    def process_response(self, request, response, spider):
        # Called with the response returned from the downloader.
        print("【步骤】HelloscrapyDownloaderMiddleware中间件")
        # Must either;
        # - return a Response object
        # - return a Request object
        # - or raise IgnoreRequest
        return response

4)在 pipelines 中添加日志

from HelloScrapy.items import HelloscrapyItem

class HelloscrapyPipeline(object):
    def process_item(self, item, spider):
        if isinstance(item, HelloscrapyItem):  # 先判断item
            print("【步骤】pipelines处理数据")
            return item

5)最后打开settings配置文件中的注释

DOWNLOADER_MIDDLEWARES = {
    'HelloScrapy.middlewares.HelloscrapyDownloaderMiddleware': 543,
}

ITEM_PIPELINES = {
    'HelloScrapy.pipelines.HelloscrapyPipeline': 300,
}

6)现在我们再运行一次爬虫

scrapy crawl MyblogSpider

输出结果:
在这里插入图片描述

这样整个项目中的数据流转过程就清楚了,下节继续总结组件知识。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值