一 Scrapy框架的简介

为了爬取网站数据而编写的一款应用框架,所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板
该框架提供了高性能的异步下载,解析和持久化等功能

二 安装

linux or max os :

pip install scrapy

windows:

pip install wheel
下载 twisted框架:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
下载好后安装:pip insta 下载的框架.whl
pip install pywin32
pip install scrapy

三 基础使用

(1) 创建一个工程: scrapy startproject 工程名称

(2) 在工程目录下创建一个爬虫文件

目录结构:

project_name/
scrapy.cfg:
project_name/__init__.pyitems.pypipelines.pysettings.pyspiders/__init__.py

scrapy.cfg 项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py 设置数据存储模板,用于结构化数据,如:Django的Model
pipelines 数据持久化处理
settings.py 配置文件,如:递归的层数、并发数,延迟下载等
spiders 爬虫目录,如:创建文件,编写爬虫解析规则

(3) 对应的文件中编写爬虫程序来完成爬虫的相关操作

cd 工程目录
执行scrapy genspider 爬虫文件的名称 起始url
文件内容:

# -*- coding: utf-8 -*-
import scrapy
class FirstSpider(scrapy.Spider):# 爬虫文件的名称: 可以通过爬虫文件的名称可以指定的定位到某一个具体的爬虫文件name = 'first'# 允许的域名: 只可以爬取指定域名下的页面数据allowed_domains = ['www.qiushibaike.com']# 起始url:当前工程要爬取的页面所对应的urlstart_urls = ['http://www.qiushibaike.com/']# 解析方法:对获取的页面数据进行指定内容的解析# response:根据起始url列表发起请求,请求成功后返回的响应对象# parse方法的返回值:必须为迭代器或者空def parse(self, response):print(response.text) # 获取响应对象的页面数据

(4) 配置文件的编写(settings.py)

所需更改的配置:

# Obey robots.txt rules
ROBOTSTXT_OBEY = False # 改成False
# 对请求载体的身份进行伪装
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'

(5) 执行

scrapy crawl 爬虫文件的名称

四  Scrapy框架的组件

Scrapy主要包括了以下组件:

  • 引擎(Scrapy)
    用来处理整个系统的数据流处理, 触发事务(框架核心)
  • 调度器(Scheduler)
    用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
  • 下载器(Downloader)
    用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
  • 爬虫(Spiders)
    爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
  • 项目管道(Pipeline)
    负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
  • 下载器中间件(Downloader Middlewares)
    位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
  • 爬虫中间件(Spider Middlewares)
    介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。
  • 调度中间件(Scheduler Middewares)
    介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

Scrapy运行流程大概如下:

  1. 引擎从调度器中取出一个链接(URL)用于接下来的抓取
  2. 引擎把URL封装成一个请求(Request)传给下载器
  3. 下载器把资源下载下来,并封装成应答包(Response)
  4. 爬虫解析Response
  5. 解析出实体(Item),则交给实体管道进行进一步的处理
  6. 解析出的是链接(URL),则把URL交给调度器等待抓取

五 爬虫文件中指定页面解析操作

需求:爬取糗事百科中段子的内容和作者

(1) 创建一个工程 scrapy startproject spiderqiubai

(2) 创建一个爬虫文件 cd spiderqiubai   scrapy gensider www.qiushibaike.com/text

(3) 编写代码

class QiubaiSpider(scrapy.Spider):name = 'qiubai'# allowed_domains = ['www.qiushibaike.com/text']start_urls = ['https://www.qiushibaike.com/text/']def parse(self, response):# 建议使用xpath进行解析(框架集成了xpath解析的接口)div_list = response.xpath('//div[@id="content-left"]/div ')for div in div_list:# xpath解析到的指定内容存储到了Selector对象# extract()该方法可以将Selector对象存储中存储的数据值拿到author = div.xpath('./div/a[2]/h2/text()').extract_first()# extract_first = extract()[0]content = div.xpath('.//div[@class="content"]/span/text()').extract_first()print(author)print(content)

转载于:https://www.cnblogs.com/harryblog/p/11350412.html

Scrapy框架的介绍和基本使用相关推荐

  1. 第41讲:Scrapy框架的介绍

    在前面编写爬虫的时候,如果我们使用 requests.aiohttp 等库,需要从头至尾把爬虫完整地实现一遍,比如说异常处理.爬取调度等,如果写的多了,的确会比较麻烦. 那么有没有什么办法可以提升我们 ...

  2. 爬虫框架Scrapy框架的介绍 一看就明白

    Scrapy功能非常强大,爬取效率高,相关扩展组件多,可配置和可扩展晨读非常高,它几乎可以应对所有反爬网站,是目前Python中使用最广泛的爬虫框架.Scrapy是一个基于Twisted的异步处理框架 ...

  3. python爬虫——scrapy框架(介绍)

    一.scrapy介绍 Scrapy是用纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能快速的抓取. Scrapy使用了 Twisted[ˈtwɪ ...

  4. Python:Scrapy 框架简单介绍

    Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...

  5. python的scrapy框架的安装_Python爬虫基础(四)--Scrapy框架的安装及介绍

    Scrapy框架的介绍 安装: pip3 install Scrapy 安装测试: cmd命令行界面,输入:scrapy -h 框架安装完成: scrapy框架: 分为五个模块+两个中间件(5+2结构 ...

  6. python 爬虫 学习笔记(一)Scrapy框架入门

    沉迷于通过高效算法及经典数据结构来优化程序的时候并不理解,为什么多线程可以优化爬虫运行速度?原来是程序特性所决定的:传统算法的程序复杂度主要来源于计算,但网络程序的计算时间可以忽略不计,网络程序所面临 ...

  7. python scrapy框架 简书_python爬虫框架——Scrapy架构原理介绍

    说起写爬虫,大多数第一时间想到的就是python了.python语法简洁明了,加上及其丰富好用的库,用它来写爬虫有天然的优势. 之前学python的时候也用requests+lxml写过几个爬虫玩,但 ...

  8. 爬虫学习笔记-scrapy框架介绍

    优势 批量爬取数据 高效率 架构图 各模块的功能 1,Scrapy Engine(引擎):Scrapy框架的核心部分.负责在Spider和ItemPipeline.Downloader.Schedul ...

  9. 13 Scrapy框架介绍

    # Author:Nimo_Ding''' 练习 - 当当图书榜单爬虫 前两关,我们学习了能提升爬虫速度的进阶知识--协程,并且通过项目实操,将协程运用于抓取薄荷网的食物数据. 可能你在体验开发一个爬 ...

最新文章

  1. 22条API设计的最佳实践
  2. 大数据为何让传统银行焦虑?
  3. Pandas to_timedelta
  4. 大数据时代了解一些问题
  5. Java7和8在虚拟机上的差异:Perm Generation vs. Metaspace
  6. “21天好习惯”第一期-12
  7. 自学编程到底有多难?
  8. 统计工具代码同步安装和异步安装有何区别
  9. 我的2018年考博英语复习计划Share
  10. v-text 丶v-html丶v-bind
  11. HyperV虚拟机连接时主机无法连接网络 2022-06-13
  12. MongoDB副本详解
  13. java 字符 加密_Java 字符串的加密与解密
  14. IOS中__bridge,__bridge_retained和__bridge_transfer理解
  15. Bilibili视频-对比学习论文综述【论文精读】
  16. 第三章 part2 单调性与极值
  17. 10款 Mac 经典原型设计开发软件推荐
  18. 二层广播风暴(产生原因+判断+解决)
  19. 极大似然估计四个步骤
  20. [转载]领航名人馆丨吴甘沙:自动驾驶将颠覆我们的生活与城市

热门文章

  1. JavaWeb_EL表达式存储数据及获得项目路径
  2. MySQL-数据操作-增删改查
  3. 如何建立DB2分区数据库?(转)
  4. MSSQL差异备份拿shell(转)
  5. 484个PHP必备的函数集
  6. 对象已死?及其判断算法
  7. 听说有人快收权限掉了
  8. 海员可以饮用蒸馏海水吗?
  9. 大家可以在十分钟内入睡吗?有什么快速入睡的方法吗?
  10. 博士和博士后的有什么区别?