Scrapy学习-(1)
Scrapy框架介绍
Scrapy是一个非常优秀的爬虫框架,基于python。
只需要在cmd运行pip install scrapy就可以自动安装。用scrapy-h检验是否成功安装
Scrapy部署一个简单的爬虫库,是一个爬虫框架。此外和requests库相比,Scrapy库适合大型爬虫,适合网站爬虫。
爬虫框架
爬虫框架是实现爬虫功能的一个软件结构和功能组件的集合,是一个半成品,能够帮助用户实现专业网络爬虫。
Scrapy框架有几个主要的板块,形成“5+2”结构,板块之间的路径关系如下图。

Scrapy框架的入口是SPIDERS,出口是ITEM PIPELINES。只有入口和出口是需要用户编写的。其他都是内部写好的。


Scrapy库的主要命令
用scrapy-h进入命令行
命令行格式 >scrapy[options][args]
| 代码 | 作用 | 格式 |
|---|---|---|
| startproject | 创建一个新的工程 | scrapy startproject [dir] |
| genspider | 创建一个爬虫 | scrapy genspider [options] |
| setting | 获得爬虫的配置信息 | scrapy setting [options] |
| crawl | 运行一个爬虫 | scrapy crawl |
| list | 列出工程中所有爬虫 | scrapy list |
| shell | 启动url调试命令行 | scrapy shell[url] |
我们需要理解工程和爬虫的爬虫的区别。
注意Scrapy爬虫是用命令行爬虫的,最初设计是给程序员使用的,没有图形界面。
Scrapy爬虫的一个实例
建立一个爬虫工程
打开cmd,用cd命令调整到特定的文件夹,建立一个工程。例如:scrapy startproject python123demo
建立好了后,工程会生成一个目录,这个目的就是这个工程。
这个目录包含一个部署爬虫的配置文件scrapy.cfg ,包含一个初始化脚本__init__.py,一个Items代码模板(继承类)item.py
Middlewares模板(继承类)middlewares.py,Piplines代码模板(继承类)pipelines.py,Scrapy爬虫配置文件 settings.py
下面有一个spiders/目录 里面是Spiders代码模板目录(继承类)存放是建立的爬虫
建立一个爬虫
打开命令行输入scrapy genspider demo来建立一个爬虫,生成一个demo.py文件到你的cmd路径。不要忘记修改cmd的路径到spyder下。

配置产生的爬虫
打开demo文件,修改里面的代码。

运行爬虫
打开命令行,输入scrapy crawl demo,执行后会出现一个demo.html文件,这个文件就是网页源码。
下面是demo.py完整代码
# -*- coding: utf-8 -*-
import scrapy
class DemoSpider(scrapy.Spider):
name = 'demo'
#allowed_domains = ['python123.io']
def start_request(scrapy.Spider):
urls = {'http://python123.io/ws/demo.html'}
for url in urls:
yield scrapy.Request(url=url ,callback=self.parse)
def parse(self, response):
fname = response.url.split('/')[-1]
with open(fname , 'wb') as f:
f.write(response.body)
self.log('Saved file %s.' % name)
Scrapy学习-(1)的更多相关文章
- Scrapy学习篇(十)之下载器中间件(Downloader Middleware)
下载器中间件是介于Scrapy的request/response处理的钩子框架,是用于全局修改Scrapy request和response的一个轻量.底层的系统. 激活Downloader Midd ...
- Scrapy学习篇(七)之Item Pipeline
在之前的Scrapy学习篇(四)之数据的存储的章节中,我们其实已经使用了Item Pipeline,那一章节主要的目的是形成一个笼统的认识,知道scrapy能干些什么,但是,为了形成一个更加全面的体系 ...
- Scrapy:学习笔记(2)——Scrapy项目
Scrapy:学习笔记(2)——Scrapy项目 1.创建项目 创建一个Scrapy项目,并将其命名为“demo” scrapy startproject demo cd demo 稍等片刻后,Scr ...
- Scrapy:学习笔记(1)——XPath
Scrapy:学习笔记(1)——XPath 1.快速开始 XPath是一种可以快速在HTML文档中选择并抽取元素.属性和文本的方法. 在Chrome,打开开发者工具,可以使用$x工具函数来使用XPat ...
- scrapy学习(完全版)
scrapy1.6中文文档 scrapy1.6中文文档 scrapy中文文档 Scrapy框架 下载页面 解析页面 并发 深度 安装 scrapy学习教程 如果安装了anconda,可以在anacon ...
- python爬虫之Scrapy学习
在爬虫的路上,学习scrapy是一个必不可少的环节.也许有好多朋友此时此刻也正在接触并学习scrapy,那么很好,我们一起学习.开始接触scrapy的朋友可能会有些疑惑,毕竟是一个框架,上来不知从何学 ...
- 转载一个不错的Scrapy学习博客笔记
背景: 最近在学习网络爬虫Scrapy,官网是 http://scrapy.org 官方描述:Scrapy is a fast high-level screen scraping and web c ...
- Scrapy学习篇(十一)之设置随机User-Agent
大多数情况下,网站都会根据我们的请求头信息来区分你是不是一个爬虫程序,如果一旦识别出这是一个爬虫程序,很容易就会拒绝我们的请求,因此我们需要给我们的爬虫手动添加请求头信息,来模拟浏览器的行为,但是当我 ...
- Scrapy学习篇(九)之文件与图片下载
Media Pipeline Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines . 这些pipeline有些共同的方 ...
- Scrapy学习笔记(5)-CrawlSpider+sqlalchemy实战
基础知识 class scrapy.spiders.CrawlSpider 这是抓取一般网页最常用的类,除了从Spider继承过来的属性外,其提供了一个新的属性rules,它提供了一种简单的机制,能够 ...
随机推荐
- Smallest Range II
2020-01-21 21:43:52 问题描述: 问题求解: 这个题目还是有点难度的,感觉很巧妙也很难想到. 整体的思路如下: 1. 首先原问题等价于 +0 / + 2*K 2. 那么res = M ...
- Building Applications with Force.com and VisualForce (DEV401) (二三):Visualforce Componets (Tags) Library Part III
Dev401-024:Visualforce Pages: Visualforce Componets (Tags) Library Part IIIStatic Resources1.Static ...
- 磐创AI GPU租用平台上线,1小时不到1块钱
>> 小白也能看懂的PyTorch从入门到精通系列 << 今天磐创AI GPU租赁平台上线了!!!为大家解决用GPU难的问题!一块10G显存的GPU,1小时租用费用不到1块钱, ...
- Jmeter接口测试之参数化(十)
在接口测试中,某些时候一些场景会使用到参数化的场景,参数化简单的说就是同一个请求需要不同的数据,比如在性能测试中需要并发多个用户的场景,这样的目的是为了模拟真实的用户场景,需要模拟不同的账号,这里就需 ...
- ClickHouse学习系列之一【安装说明】
背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.按照习惯第一步先安装,本文对其用户权限管理方面进行梳理说明 ...
- [React]Hook初探
Hook是什么 Hook是React从16.8开始支持的特性,使用Hook可以在不使用class时使用state Hook支持在不需要修改组件状态的情况下复用逻辑状态,从而解决使用render pro ...
- iOS 优化实例
一.接口请求优化 在工程项目中,多个一级界面包含状态,如:服务入口的动态配置,未读消息数量,图片文字等,因此产品设计要每次切换 tab 时都请求数据,及时的更新页面状态.在实际开发中,频繁的调用接口, ...
- 字符串中的count()方法
描述 Python count() 方法用于统计字符串里某个字符出现的次数.可选参数为在字符串搜索的开始与结束位置. 语法 count()方法语法: str.count(sub, start= 0,e ...
- 常见SQL语句和SQL基础知识
引自:http://blog.csdn.net/u012467492/article/details/46790205 SQL语句考察(一) 1.查询出每门课都大于80 分的学生姓名 name k ...
- 关于js在一个固定的盒子里面拖拽的问题(包含临界值)
回武汉打卡第三天,武汉加油,逆战必胜!今天我们一起分享一下js拖拽的问题. 当然实现拖拽方法是有很多的,下面简单讲一种方法,大致思路如下: 首先需要用到的事件主要有 onmousedown,onmo ...