第二节:Scrapy版的Hello World

前置知识:

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

说明: 运行环境

Win10,Python3 64位

目录:

  • 第一节:Scrapy介绍和安装配置
  • 第二节:Scrapy版的Hello World
  • 第三节:Scapy框架结构和组件介绍

本节演示如何建立一个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 scrapyclass 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 HelloscrapyItemclass 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 IgnoreRequestreturn response

4)在 pipelines 中添加日志

from HelloScrapy.items import HelloscrapyItemclass HelloscrapyPipeline(object):def process_item(self, item, spider):if isinstance(item, HelloscrapyItem):  # 先判断itemprint("【步骤】pipelines处理数据")return item

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

DOWNLOADER_MIDDLEWARES = {'HelloScrapy.middlewares.HelloscrapyDownloaderMiddleware': 543,
}ITEM_PIPELINES = {'HelloScrapy.pipelines.HelloscrapyPipeline': 300,
}

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

scrapy crawl MyblogSpider

输出结果:

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

Scrapy基础 第二节:Scrapy版的Hello World相关推荐

  1. 初等数学O 集合论基础 第二节 映射与集合的势

    初等数学O 集合论基础 第二节 映射与集合的势 这一节的目标是基于映射建立比较集合"大小"的工具--集合的势(cardinality),也被称为集合的基数,这个工具是自然数的基数理 ...

  2. Java基础 第二节 第二十课

    引用类型用法总结 概述 class 作为成员变量 武器类 盔甲类 角色类 测试类 interface 作为成员变量 定义接口 定义角色类 定义测试类 interface 作为方法参数和返回值类型 定义 ...

  3. 【Python基础知识-pycharm版】第二节-赋值/数据类型/时间点/运算符/字符串

    python第二节 链式赋值_系列解包赋值 内置数据类型 时间表示unix时间点 多点坐标绘出折线图 运算符 字符串 部分来源: 1.https://blog.csdn.net/wys103158/a ...

  4. Scrapy基础 第三节:Scrapy框架结构和组件介绍

    前置知识: 掌握Python的基础知识 对爬虫基础有一定了解 说明: 运行环境 Win10,Python3 64位 目录: 第一节:Scrapy介绍和安装配置 第二节:Scrapy版的Hello Wo ...

  5. 爬虫基础篇之Scrapy抓取京东

    虚拟环境 同一台服务器上不同的项目可能依赖的包不同版本,新版本默认覆盖旧版本,可能导致其他项目无法运行,通过虚拟环境,完全隔离各个项目各个版本的依赖包,实现运行环境互不影响. virtualenv p ...

  6. scrapy 解析css,Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段...

    上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...

  7. c++ 传智课件_沪科版初中物理九年级全册第二节 科学探究:物质的比热容公开课优质课课件教案视频...

    第十二章 温度与物态变化PPT课件教案下载_初中物理沪科版九年级全一册师梦圆​第一节 温度与温度计PPT课件教案下载_初中物理沪科版九年级全一册师梦圆​第二节 熔化与凝固PPT课件教案下载_初中物理沪 ...

  8. 网络营销教程SEO 第四章.搜索引擎优化基础(第二节)

    rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsoh ...

  9. Python基础学习(第二节 下)

    这里写目录标题 1.布尔值的相关运算符 (1)布尔值 (2)比较运算符 (3)逻辑运算符 (4)同一运算符 2.字符串 (1)字符串的基本特点 (2)字符串的创建和len( )函数 (3)转义字符 ( ...

最新文章

  1. 8Manage:企业管理软件要通用型还是定制开发?
  2. hdu5015 矩阵快速幂233(好题)
  3. 项目实战4—HAProxy实现高级负载均衡实战和ACL控制
  4. 找出第i个小元素(算法导论第三版9.2-4题)
  5. 【Python爬虫】Request库入门
  6. 4.11 一维到三维推广
  7. shared_ptr实现copy_on_write
  8. svn安装使用以及各种问题解决
  9. JMeter下载安装以及使用教程
  10. WORD里表格复制到另一WORD里表格会变形的解决办法
  11. [论文阅读] Meta-Weight-Net: Learning an Explicit Mapping For Sample Weighting
  12. Oracle RAC Failover 说明
  13. 【2017级面向对象程序设计】第3、4次成绩及排名
  14. 前端面试题综合(四)
  15. alibaba-COLA框架module分析
  16. 快速实现免费的个人免签收款功能(不写一行代码)
  17. 基于C#弹幕类射击游戏的实现——(十)整合
  18. python中怎么调整代码字体格式,pythondocx如何在文本和制表符之间分别更改字体大小...
  19. tecplot不能导入fluent多面体的解决办法
  20. 腾讯安全被列为全球大型威胁情报厂商

热门文章

  1. android vlc rtsp卡顿,VLC播放器 RTSP 卡顿解决
  2. Attributes
  3. java程序线上故障排查及解决方案
  4. PacketTracer模拟器物联网教程2—MCU微控制器编程
  5. 解读病毒式营销的典型案例
  6. 数据分析——切片器、数据透视表与数据透视图(职场必备)
  7. HTB-Inject
  8. iOS获取设备UDID/IMEI信息
  9. 关于java的session共享
  10. 为何新疆的股权投资企业所得税是12%,个人所得税是16%