首页 > 其他分享 >【6.0】爬虫之scrapy框架

【6.0】爬虫之scrapy框架

时间:2023-08-22 09:23:09浏览次数:44  
标签:py Scrapy 爬虫 scrapy 6.0 安装 下载

【一】Scrapy框架基本介绍

【1】Scrapy一个开源和协作的框架

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

【2】整体架构大致如下

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)

【3】官网链接

【二】安装

【1】Windows平台

(1)安装wheel文件

  • 在 Windows 平台上安装 Scrapy 之前
    • 首先需要安装 wheel 文件。wheel 文件是一种 Python 包的分发格式,可以方便地进行安装。
    • 可以通过以下命令来安装 wheel
pip3 install wheel

(2)安装 lxml 解析器

  • Scrapy 使用 lxml 解析器来进行 HTML 和 XML 的解析工作。
  • 要安装 lxml,可以执行以下命令:
pip3 install lxml

(3)安装 pyopenssl

  • Scrapy 在进行 HTTPS 请求时,需要使用 pyopenssl 模块来提供 SSL/TLS 支持。
  • 安装 pyopenssl 可以使用以下命令:
pip3 install pyopenssl

(4)下载并安装pywin32

(5)下载twisted的wheel文件

(6)安装twisted

  • 下载完成 twistedwheel 文件后,可以使用以下命令安装 twisted
pip3 install 下载目录\Twisted-17.9.0-cp36-cp36m-win_amd**.whl
  • 下载目录 替换为您实际下载 twisted wheel 文件所在的目录
  • 并根据您的 Python 环境选择正确的文件名进行替换。

(7)安装scrapy(可以优先尝试这个命令,报错再按照上述安装对应的依赖)

  • 当上述依赖项都安装完成后,可以使用以下命令来安装 Scrapy:
pip3 install scrapy

【2】Linux平台

  • 在 Linux 平台上安装 Scrapy,可以通过以下命令进行安装:
pip3 install scrapy

【三】命令行工具

【1】查看帮助

scrapy -h
scrapy <command> -h
  • 第一个命令用于查看全部可用命令的帮助信息
  • 第二个命令用于查看特定命令的帮助信息

【2】全局命令(Global commands)和项目命令(Project-only commands)

  • 其中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压力测试

全局命令(Global commands):

  • startproject:创建一个新的 Scrapy 项目。
  • genspider:创建一个新的爬虫程序。
  • settings:显示一个 Scrapy 项目的配置信息。
  • runspider:运行一个独立的 Python 文件作为爬虫,不需要创建项目。
  • shell:进入 Scrapy 的交互式调试环境,可以检查选择器规则是否正确。
  • fetch:单独请求一个页面,并获取响应结果。
  • view:下载指定页面并在浏览器中打开,用于检查通过哪些请求获取数据。
  • version:查看当前安装的 Scrapy 版本号。

项目命令(Project-only commands):

  • crawl:运行一个 Scrapy 爬虫,必须在项目目录下执行且确保配置文件中的 ROBOTSTXT_OBEY 设置为 False
  • check:检查项目中是否存在语法错误。
  • list:列出项目中包含的所有爬虫名称。
  • parse:使用回调函数解析给定的 URL,用于验证回调函数是否正确。
  • bench:用于对 Scrapy 进行压力测试。

【3】官网链接

【四】创建项目

【1】创建步骤

  • 创建项目命令:
scrapy startproject 项目名
  • 进入爬虫项目文件
cd NewsPro
  • 创建spider项目
scrapy genspider wangyi news.163.com
scrapy genspider huanqiu huanqiu.com

【2】目录结构

├── NewsPro 						# 项目名
│   ├── __init__.py
│   ├── items.py					# 类似于django的 models表模型,一个个模型类
│   ├── middlewares.py				# 中间件
│   ├── pipelines.py 				# 管道---》写持久化
│   ├── settings.py					# 项目配置文件
│   └── spiders						# 里面放了自定义的爬虫,类似于app
│       ├── __init__.py
│       ├── huanqiu.py				# 自定义爬虫
│       └── wangyi.py				# 自定义爬虫
└── scrapy.cfg						# 项目上线配置

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

【3】简单使用

  • 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)

【4】启动爬虫程序

scrapy crawl wangyi

【5】优化启动程序

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

标签:py,Scrapy,爬虫,scrapy,6.0,安装,下载
From: https://www.cnblogs.com/dream-ze/p/17647614.html

相关文章

  • 【爬虫案例小结】
    【案例】登陆博客园【1】思路分析打开cnblogs点进登录页面输入用户名密码点登录(可能会出现验证码)----手动操作跳过验证码登录成功后拿到cookie保存到本地关闭浏览器开启selenium,打开浏览器把本地的cookie写入到当前浏览器中当前浏览器就是登录状态【2】......
  • 在odoo16.0中使用微信支付
    作为国内移动支付的两大提供商之一的微信支付并不在Odoo官方的支持列表中,甚至曾经一度被官方支持的支付宝(Alipay)也在16.0以后的版本中遭到的过时的标记,被并入了asipay的选项中。国内的生态不被官方重视也并非一日,但是需求并不会因为不被重视而消失,因此,我们决定自己来手动实现。......
  • 变动的Python爬虫实现
    在电商时代,了解商品价格的变动对于购物者和卖家来说都非常重要。本文将分享一种基于Python的实时监控电商平台商品价格变动的爬虫实现方法。通过本文的解决方案和代码示例,您将能够轻松监控商品价格,并及时做出决策。一、了解需求和目标在实时监控电商平台商品价格变动之前,我们需要明......
  • 爬虫ip带你探索无限可能
    各位程序猿大佬们,今天我要为大家带来一个备受关注的话题:爬虫ip的应用范围!你可能会好奇,什么是爬虫ip?它在我们的日常生活中有哪些神奇的应用呢?让我们一起来揭开这个神秘的面纱,探索无限可能吧!第一段:解锁地区限制,畅享资源 你是否纠结于无法访问某些网站或应用?别担心,爬虫ip可以为你打开......
  • Python爬虫实现简单翻译
    importrequestsimportjsonimportosurl="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"data={"from":"AUTO","to":"AUTO","smartresult":"dict&quo......
  • 多线程爬虫
    pythonGIL锁同步线程的一种机制,即使在多处理器也是仅有一个线程在执行避免GIL用multiprocessing替代Thread用多进程代替多线程,每个进程有自己的独立的GIL,不会出现进程之间的GIL争抢。多进程的创建和销毁开销也会更大,成本高LOCK锁原子操作 一步是计算,一步的赋值,所以不是......
  • 爬虫开发网络基本知识
    爬虫开发网络基本知识1.HTTP与HTTPS超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比......
  • Flowable 6.6.0版本中的数据库表解读 - ACT_RE篇
    本文将介绍Flowable6.6.0版本中以ACT_RE_开头的表,RE表示repository(存储),流程定义/部署相关的表。ACT_RE_PROCDEF这个表存储了流程定义信息。字段名字段含义ID_流程定义IDREV_修订版本号CATEGORY_分类NAME_流程定义名称KEY_流程定义KEYVERSION_......
  • 动态爬虫-时光网影评
    importrequestsimporttimeheaders={'user-agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36','referer':'http://movie.mtime.com/209164......
  • 【16.0】前端登陆页面
    【一】分析登录,注册,都写成组件----》在任意页面中,都能点击显示登录模态框写好的组件,应该放在那个组件中----》不是页面组件(小组件)点击登录按钮,把Login.vue通过定位,占满全屏,透明度设为0.5,纯黑色悲剧,覆盖在组件上在Login.vue点关闭,要把Login.vue隐藏起来,父子通信......