Scrapy基础 第二节:Scrapy版的Hello World
第二节: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相关推荐
- 初等数学O 集合论基础 第二节 映射与集合的势
初等数学O 集合论基础 第二节 映射与集合的势 这一节的目标是基于映射建立比较集合"大小"的工具--集合的势(cardinality),也被称为集合的基数,这个工具是自然数的基数理 ...
- Java基础 第二节 第二十课
引用类型用法总结 概述 class 作为成员变量 武器类 盔甲类 角色类 测试类 interface 作为成员变量 定义接口 定义角色类 定义测试类 interface 作为方法参数和返回值类型 定义 ...
- 【Python基础知识-pycharm版】第二节-赋值/数据类型/时间点/运算符/字符串
python第二节 链式赋值_系列解包赋值 内置数据类型 时间表示unix时间点 多点坐标绘出折线图 运算符 字符串 部分来源: 1.https://blog.csdn.net/wys103158/a ...
- Scrapy基础 第三节:Scrapy框架结构和组件介绍
前置知识: 掌握Python的基础知识 对爬虫基础有一定了解 说明: 运行环境 Win10,Python3 64位 目录: 第一节:Scrapy介绍和安装配置 第二节:Scrapy版的Hello Wo ...
- 爬虫基础篇之Scrapy抓取京东
虚拟环境 同一台服务器上不同的项目可能依赖的包不同版本,新版本默认覆盖旧版本,可能导致其他项目无法运行,通过虚拟环境,完全隔离各个项目各个版本的依赖包,实现运行环境互不影响. virtualenv p ...
- scrapy 解析css,Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段...
上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...
- c++ 传智课件_沪科版初中物理九年级全册第二节 科学探究:物质的比热容公开课优质课课件教案视频...
第十二章 温度与物态变化PPT课件教案下载_初中物理沪科版九年级全一册师梦圆第一节 温度与温度计PPT课件教案下载_初中物理沪科版九年级全一册师梦圆第二节 熔化与凝固PPT课件教案下载_初中物理沪 ...
- 网络营销教程SEO 第四章.搜索引擎优化基础(第二节)
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsoh ...
- Python基础学习(第二节 下)
这里写目录标题 1.布尔值的相关运算符 (1)布尔值 (2)比较运算符 (3)逻辑运算符 (4)同一运算符 2.字符串 (1)字符串的基本特点 (2)字符串的创建和len( )函数 (3)转义字符 ( ...
最新文章
- 8Manage:企业管理软件要通用型还是定制开发?
- hdu5015 矩阵快速幂233(好题)
- 项目实战4—HAProxy实现高级负载均衡实战和ACL控制
- 找出第i个小元素(算法导论第三版9.2-4题)
- 【Python爬虫】Request库入门
- 4.11 一维到三维推广
- shared_ptr实现copy_on_write
- svn安装使用以及各种问题解决
- JMeter下载安装以及使用教程
- WORD里表格复制到另一WORD里表格会变形的解决办法
- [论文阅读] Meta-Weight-Net: Learning an Explicit Mapping For Sample Weighting
- Oracle RAC Failover 说明
- 【2017级面向对象程序设计】第3、4次成绩及排名
- 前端面试题综合(四)
- alibaba-COLA框架module分析
- 快速实现免费的个人免签收款功能(不写一行代码)
- 基于C#弹幕类射击游戏的实现——(十)整合
- python中怎么调整代码字体格式,pythondocx如何在文本和制表符之间分别更改字体大小...
- tecplot不能导入fluent多面体的解决办法
- 腾讯安全被列为全球大型威胁情报厂商