首页 > 其他分享 >Day 23 23.1 Scrapy框架之简介&安装

Day 23 23.1 Scrapy框架之简介&安装

时间:2023-04-07 16:13:45浏览次数:46  
标签:wangyi install 23 py 爬虫 Scrapy 23.1 scrapy

Scrapy框架简介

(1)基本介绍

  • Scrapy一个开源和协作的框架,
    • 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,
    • 使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。
    • 但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。
    • Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。
    • 因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。
  • 整体架构大致如下:


Components:

1、引擎(EGINE)
引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。

2、调度器(SCHEDULER)
用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址

3、下载器(DOWLOADER)
用于下载网页内容, 并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的

4、爬虫(SPIDERS)
SPIDERS是开发人员自定义的类,用来解析responses,并且提取items,或者发送新的请求

5、项目管道(ITEM PIPLINES)
在items被提取后负责处理它们,主要包括清理、验证、持久化(比如存到数据库)等操作
下载器中间件(Downloader Middlewares)位于Scrapy引擎和下载器之间,主要用来处理从EGINE传到DOWLOADER的请求request,已经从DOWNLOADER传到EGINE的响应response,

6、爬虫中间件(Spider Middlewares)
位于EGINE和SPIDERS之间,主要工作是处理SPIDERS的输入(即responses)和输出(即requests)

官网链接

(2)安装

#Windows平台
    1、pip3 install wheel #安装后,便支持通过wheel文件安装软件,wheel文件官网:https://www.lfd.uci.edu/~gohlke/pythonlibs
    3、pip3 install lxml
    4、pip3 install pyopenssl
    5、下载并安装pywin32:https://sourceforge.net/projects/pywin32/files/pywin32/
    6、下载twisted的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
    7、执行pip3 install 下载目录\Twisted-17.9.0-cp36-cp36m-win_amd64.whl
    (pip install twisted)
    8、pip3 install scrapy
  
#Linux平台
    1、pip3 install scrapy

(3)命令行工具

# 1 查看帮助
    scrapy -h
    scrapy <command> -h

# 2 有两种命令:其中Project-only必须切到项目文件夹下才能执行,而Global的命令则不需要
    Global commands:
        startproject #创建项目
        genspider    #创建爬虫程序
        settings     #如果是在项目目录下,则得到的是该项目的配置
        runspider    #运行一个独立的python文件,不必创建项目
        shell        #scrapy shell url地址  在交互式调试,如选择器规则正确与否
        fetch        #独立于程单纯地爬取一个页面,可以拿到请求头
        view         #下载完毕后直接弹出浏览器,以此可以分辨出哪些数据是ajax请求
        version      #scrapy version 查看scrapy的版本,scrapy version -v查看scrapy依赖库的版本
    Project-only commands:
        crawl        #运行爬虫,必须创建项目才行,确保配置文件中ROBOTSTXT_OBEY = False
        check        #检测项目中有无语法错误
        list         #列出项目中所包含的爬虫名
        parse        #scrapy parse url地址 --callback 回调函数  #以此可以验证我们的回调函数是否正确
        bench        #scrapy bentch压力测试

# 3 官网链接
    https://docs.scrapy.org/en/latest/topics/commands.html

(4)创建项目

  • 创建项目命令:
scrapy startproject NewsPro
cd NewsPro
scrapy genspider wangyi news.163.com
scrapy genspider huanqiu huanqiu.com
  • 目录:
├── NewsPro
│   ├── __init__.py
│   ├── items.py
│   ├── middlewares.py
│   ├── pipelines.py
│   ├── settings.py
│   └── spiders
│       ├── __init__.py
│       ├── huanqiu.py
│       └── wangyi.py
└── scrapy.cfg

  • 文件说明:
  • scrapy.cfg 项目的主配置信息,用来部署scrapy时使用,爬虫相关的配置信息在settings.py文件中。
  • items.py 设置数据存储模板,用于结构化数据,如:Django的Model
  • pipelines 数据处理行为,如:一般结构化的数据持久化
  • settings.py 配置文件,如:递归的层数、并发数,延迟下载等。强调:配置文件的选项必须大写否则视为无效,正确写法USER_AGENT='xxxx'
  • spiders 爬虫目录,如:创建文件,编写爬虫规则
  • wangyi.py
import scrapy


class WangyiSpider(scrapy.Spider):
    name = "wangyi"
    allowed_domains = ["news.163.com"]
    start_urls = ["http://news.163.com/"]

    def parse(self, response):
        print("response:::", response.text)
  • 启动爬虫程序:
scrapy crawl wangyi
  • 每一次终端启动和麻烦,我们可以在项目根目录下新建启动文件
  • bin.py:
from scrapy.cmdline import execute
execute(['scrapy', 'crawl', 'wangyi', "--nolog"])

标签:wangyi,install,23,py,爬虫,Scrapy,23.1,scrapy
From: https://www.cnblogs.com/dream-ze/p/17296472.html

相关文章

  • Day 23 23.2 Scrapy框架之详解
    Scrapy框架详解【1】Spider类Spiders是定义如何抓取某个站点(或一组站点)的类,包括如何执行爬行(即跟随链接)以及如何从其页面中提取结构化数据(即抓取项目)。换句话说,Spiders是您为特定站点(或者在某些情况下,一组站点)爬网和解析页面定义自定义行为的地方。1、生成初始的Request......
  • 群晖DS920+网络附属存储服务器NAS部署示意图图示2023年4月7日
          群晖DS920+网络附属存储服务器NAS部署示意图图示2023年4月7日  ......
  • 【2023-04-05】连岳摘抄
    23:59春事阑珊芳草歇。客里风光,又过清明节。小院黄昏人忆别。落红处处闻啼鴂。咫尺江山分楚越。目断魂销,应是音尘绝。梦破五更心欲折。角声吹落梅花月。                                      ......
  • 【2023-04-04】二瓜出洞
    20:00人作事极不可迂滞,不可反复,不可烦碎;代人作事又极要耐得迂滞,耐得反复,耐得烦碎。                                                 ——林逋现在二宝爬得好溜了。此......
  • scrapy爬虫框架(六)Item Pipeline的使用
      ItemPipeline即项目管道,它的调用发生在Spider产生Item之后。当Spider解析完Response,Item就会被Engine传递到ItemPipeline,被定义的ItemPipeline组件会顺次被调用,完成一连串的处理过程,比如数据清洗、存储等。  ItemPipeline的主要功能如下:清洗HTML数据。验证爬取数据,......
  • 数组学习20230407
    今日学习数组:上节课背点:1.三角图输出:上改条件下改值2.外循环控制行,内循环控制列01变量一个数据数组多个同类数据数组/array相同类型数据的组合数组的声明:1.数据类型[]数组名intarr1=newint[]{元素,元素,元素}2.数组类型数组名[]......
  • C/C++机房失物招领[2023-04-07]
    C/C++机房失物招领[2023-04-07]程序设计题:机房失物招领出题人:许棣华面向专业:软件工程难度等级:41问题描述经常有一些丢三落四的同学,在不经意的时候会丢失物品。比如:在机房,每天做值日的同学都会发现有U盘、钥匙、书本等物品被落下,他们会将这些物品放在固定位置或交由工作人员......
  • CVPR 2023 | 单阶段半监督目标检测SOTA:ARSL
    本文提出了针对单阶段半监督目标检测任务的Ambiguity-ResistantSemi-supervisedLearning(ARSL)算法,创新地提出了两个通用的单阶段半监督检测模块:Joint-ConfidenceEstimation(JCE)和Task-SeparationAssignment(TSA)。JCE通过联合分类和定位任务的置信度评估伪标签质量。TSA基于教师模......
  • 产品原型9-20230406
                ......
  • 20230406ARC专场训练1
    [ARC125D]UniqueSubsequence可以用一个树状数组来维护当前有多少个合法子序列以\(i\)结尾,记作\(f_i\)。那么每次有\(f_i=\sum_{j=las_{i}}^if_j\).\(las_i\)表示\(a_i\)上一次出现的位置.同时要把\(f_{las_i}\)设为\(0\).[ARC125E]Snack可以很简单的建......