第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)

  • Scrapy是一个高级Web爬虫框架,用于爬取网站并从页面中提取结构化数据。它可以用于数据挖掘、数据监控和自动化测试等多个方面。与之前讲过的Requests库和Selenium库不同,Scrapy更适合进行大批量的数据采集(类似于百度搜索引擎),其内容相对复杂。对于普通的爬虫学习者来说,如果只是做一些小规模的数据爬取(不超过10万条数据),而不是做类似百度搜索引擎那样超大规模的数据爬取,那么简单了解本章内容即可。

5.1 Scrapy 框架基础

  • 前面说过,Scrapy 是一个爬虫框架。 所谓框架,可以理解成一个特殊的工具, 它集成了许多事先编写好的常规代码,并做好了这些代码文件的连接,这样用户就可以专注于编写自己的任务中个性化部分的代码,无须自己编写常规代码。
  • Scrapy的优缺点也很明显:优点是异步、高并发(速度快),且易于进行项目维护,在大规模数据爬取任务中有较大的优势;缺点是与传统的Requests库和Selenium库相比,由于涉及多个Python文件的交互,其代码编写较为复杂,且在小规模数据爬取任务中优势不大。
  • Scrapy官方文档英文版网址为htst:cs.crarp.org/e/atest.如果阅读英文有困难,可借助浏览器的翻译功能将其翻译成中文。

5.1.1 Scrapy的安装方法

  • 如果应安装了Anaconda,那么通常可以直接使用命令”pip install scrapy”即可安装Scrapy。

5.1.2 Scrapy的整体框架

  • Scrapy的整体架构和数据流向如下图所示(箭头表示各组件之间的数据流向)。初学者看到下图往往会因为有很多新名词而产生畏难情绪,其实如果抛开专业术语,透过现象看本质,Scrapy的核心逻辑与Requests库或Selenium库的爬虫逻辑并无区别,还是”请求数据、获取数据一解析数据一分析或处理数据”这一系 列操作。
  • 如果暂时看不懂下图也没有关系,可以直接跳到5.1.3 节。接下来的案例实战会由简人繁地逐步讲解每一个组件, 在实战中能更形象地体会各个组件的功能及关联性。

第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)

; 5.1.3 Scrapy的常用指令

第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
1.创建爬虫项目
  • Scrapy的爬虫项目不是单个的Python文件,而是由一个个相互关联的Python文件组成。每个Python文件各司其职,发挥着不同的作用。因此,使用Scrapy框架的第一步就是创建爬虫项目。
  • 假设要在文件夹”D:\works\python_crawl1\python爬虫(提高)\第五章 Scrapy爬虫框架”下创建爬虫项目。在文件资源管理器中进入该文件夹,在路径栏中输入”cmd”,如下图所示,按enter键,在该文件夹路径中打开命令行窗口。或者按住shift键的同时在文件夹中右击,然后选择”在此处打开Powershell窗口”命令。
D:\works\python_crawl1\python爬虫(提高)\第五章 Scrapy爬虫框架>scrapy startproject demo
New Scrapy project 'demo', using template directory 'C:\Users\***\AppData\Roaming\Python\Python39\site-packages\scrapy\templates\project', created in:
    D:\works\python_crawl1\python爬虫(提高)\第五章 Scrapy爬虫框架\demo

You can start your first spider with:
    cd demo
    scrapy genspider example example.com
2. 进入爬虫项目
D:\works\python_crawl1\python爬虫(提高)\第五章 Scrapy爬虫框架>cd demo
3.创建具体的爬虫文件
  • 进入项目后,我们可以创建具体的爬虫文件。以爬取百度为例,在上面代码后,输入并执行命令”scrapy genspider bai baidu.com”,创建具体的爬虫文件。”genspider”后的”baidu”为爬虫文件名,也可以换成其他名称,而”baidu.com”中的”baidu”则是百度的域名,不能换成其他内容,并且注意这里的爬虫文件不能和项目文件名相同。
  • 注意在没有创建具体的爬虫文件时,spider下面只有一个 __init__文件。
    第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
D:\works\python_crawl1\python爬虫(提高)\第五章 Scrapy爬虫框架\demo>scrapy genspider baidu baidu.com
Created spider 'baidu' using template 'basic' in module:
  demo.spiders.bai #这里是具体路径
  • 执行完上图中的指令后,在项目的文件夹”spiders”下就生成了一个名为”baidu.py”的python文件,如下图所示。
    第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
  • 打开”baidu.py”,可以看到Scrapy框架自动生成的代码。其中定义了一个类BaiSpider,类中有一些属性和方法(类中的函数成为方法,两种略有些区别,不过无须深究)。
    第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
4.运行爬虫项目
  • 接下来要做的就是运行爬虫项目。如果像在Pycharm中运行单个代码文件那样,(1)右击文件”baidu.py”,(2)在弹出的快捷菜单中执行”Run ‘baidu'”命令,(3)那么打印输出结果会是空白的。
  • 这是因为Scrapy爬虫项目是由多个Python文件组成的,这里的”baidu.py”其实和其他Python文件有关联。如果只运行这一个文件,并不能真正启动爬虫项目。在Scrapy中,应该使用指定”scrapy crawl xxx(爬虫名)”来执行爬虫项目。这里的爬虫名为”baidu”,那么对应的指令为”scrapy crawl baidu”。
  • 有两种方法来执行指令:在之前打开的命令行窗口中执行;在Pycharm的终端(Terminal)中执行。首先来演示在命令行窗口中执行。如下图所示,在命令行窗口中输入并执行指令”scrapy crawl baidu”。
D:\works\python_crawl1\python爬虫(提高)\第五章 Scrapy爬虫\demo>scrapy crawl baidu
  • 运行结果如下,可以看到打印输出了一些内容,说明爬虫项目运行成功。在此次运行出现404,即没有找到网页(因为输入网址有误),但是也可以出现”DEBUG: Forbidden by robots txt
  • 在PyCharm的终端中运行爬虫项目的操作更加简单,如下图所示:
    第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
  • 然后在Terminal中输入指令”Scrapy crawl baidu”,如下图所示。
    第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
  • 在PyCharm的终端中运行的结果和在命令行窗口中运行的结果一样。因为在Pytharm的终端中运行爬虫项目不仅操作简单,而且输出形式美观,所以之后都会以这种方式运行爬虫项目。
from scrapy import cmdline #这个本质也是在Terminal 终端运行
cmdline.execute("scrapy crawl baidu".split())

第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)

Original: https://blog.csdn.net/Triumph19/article/details/125122093
Author: Triumph19
Title: 第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/789903/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 常见聚类算法总结

    一 . 关于聚类 什么是聚类 : 聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇…

    Python 2023年10月26日
    033
  • 基于朴素贝叶斯的垃圾邮件分类Python实现

    背景 垃圾邮件的问题一直困扰着人们,传统的垃圾邮件分类的方法主要有”关键词法”和”校验码法”等,然而这两种方法效果并不理想。其中,如…

    Python 2023年8月1日
    048
  • 使用Google OR-Tools分析过去20年中国金融资产最佳配置组合

    前两天,在朋友圈里看到一张截至2022年Q2的金融资产历年收益图如下,图中列举了国内从2005年到2022年近20年主要的金融资产历年收益率,随产生想法分析和验证下面几个问题: 过…

    Python 2023年10月12日
    037
  • 几亿人都在玩的谷歌小恐龙游戏,全世界最高分是 99999?你呢?

    前言 “越努力越幸运鸭💦💦,记得每天进步一点点哦!” ——Python是世界上最好的语言 Everybody 大家好~(也不清楚我的开头的单词写错没,懒.j…

    Python 2023年9月21日
    047
  • Python知识点大全(非常详细)

    Python知识点大全 Python知识点汇总(一) Python知识点汇总(二) Python知识点汇总(一) 1、Python的两种编程⽅式:交互式(随输随运⾏)和⽂件式(主要…

    Python 2023年8月1日
    072
  • 使用Mask R-CNN模型实现人体关键节点标注

    摘要:在本案例中,我们将展示如何对基础的Mask R-CNN进行扩展,完成人体关键节点标注的任务。 ModelArts 是面向开发者的一站式 AI 开发平台,为机器学习与深度学习提…

    Python 2023年10月29日
    040
  • 复现开源论文代码总结

    复现开源论文代码总结 1. 找到开源论文的代码 2. 阅读README.md说明文档 3. 代码下载与解压 4. 配置环境、下载数据集与预训练权重 5. 运行代码,排错 参考 随着…

    Python 2023年10月27日
    040
  • 数据分析:Numpy基础

    np.array的创建 import numpy as np #方法一 np.array([1,2,3],dtype=”) 参数1:数据源 参数二:表示的是数组中元素的类型 #方…

    Python 2023年8月27日
    053
  • 基础数据类型之集合

    1.集合的定义 在{}内用逗号分开多个元素,多个元素满足以下三个条件: 1.集合元素必须是不可变类型2.集合元素无序3.集合内元素没有重复(打印出来会自动去重) d = {} 默认…

    Python 2023年5月23日
    075
  • 【Python 飞机大战】

    #背景,音乐等位置用a,b,c,d 表示,直接修改abcd对应的文件位置即可使用 与敌机相撞后会扣分,但未编写复活,或无敌,在扣分判定范围内持续扣分 #路径为绝对路径可自行更改为相…

    Python 2023年9月22日
    043
  • leetcode 104. Maximum Depth of Binary Tree 二叉树的最大深度(简单)

    给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,nu…

    Python 2023年6月12日
    071
  • 使用Pytorch进行多卡训练

    深度学习中,当一块GPU不够用时,我们就需要使用多卡进行并行训练。其中多卡并行可分为数据并行和模型并行。具体区别如下图所示: 由于模型并行比较少用,这里只对数据并行进行记录。对于p…

    Python 2023年10月31日
    035
  • Flask的安装

    1,创建应用目录: $mkdir flasky $cd flasky 2,创建虚拟环境:(在Python3中创建虚拟环境)如果使用的是Ubuntu Linux系统预装的Python…

    Python 2023年8月13日
    075
  • 模型已经写好了,怎么表白就看你的了

    【阅读全文】 开始之前先来看看效果图,在控制台输入相应的参数设置即可生成自己独特的表白图。 想要在图片上书写什么样的信息,就看你的发挥了,哈哈哈~ import turtle as…

    Python 2023年11月3日
    027
  • java调用python文件的几种方式【超细讲解!】

    java调用python的契机来自于一个项目需要用到算法,但是算法工程师们写的python,于是就有了java后端调用python脚本的需求,中间遇到了许多问题,特此记录整理了一次…

    Python 2023年8月1日
    064
  • 我,30岁了,还在为涨粉而抓耳挠腮,自研工具让我找到了方向。。。。

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。😁 1. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划💪🏻 2. Python基础专栏,基础知识一网打尽。Pyth…

    Python 2023年8月12日
    046
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球