热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

3.爬虫之Scrapy框架的安装与使用

1.Scrapy框架1.1介绍Scrapy是一个开源和协作框架,可以用于数据挖掘,监测,自动化测试,获取API所有返回的数据或网络爬虫.Scrapy是基于twisted框架开发

1. Scrapy框架


1.1 介绍

Scrapy是一个开源和协作框架, 可以用于数据挖掘, 监测, 自动化测试, 获取API所有返回的数据或网络爬虫.

Scrapy是基于twisted框架开发的, twisted是一个流行的事件驱动的python网络框架,
使用非阻塞(异步)代码实现并发.

1.2 框架图

1.3 执行流程

* 1. 爬虫(SPIDERS)中包装成requests对象给引擎(ENGINE).SPIDERS(爬虫) 只要用于解析数据与发送请求(可以有多个请求).
* 2. 引擎接受到requests对象, 转发到调度器(SCHEDULER).
* 3. 调度器(SCHEDULER)是一个队列(深度优先爬取, 广度优先爬取), 请求排队在经过处理, 返回到调度器中.
* 4. 调度器(SCHEDULER)经过中间件转发到下载器(DOWNLOADER), 下载器中在发送request请求.
* 5. 下载器中得到response响应, 在经过中间件到引擎.
* 6. 引擎得到response经过中间件转发到爬虫解析数据(解析结果是一个网址或数据).
* 7. 爬虫进过中间见转发到引擎
* 8. 引擎判断接受的requesrs对象则再次重复上面步骤, 如果是ITEMS则转发到项目管道(ITEM PIPELINES),项目管道中对数据进行存储(一个文件可以保存到不同的位置).

1.4 五大组件

五大组件:
1. 引擎: 负责控制数据的流向
2. 调度器: 决定下一个要抓取的网址(集合去重)
3. 下载器: 下载网页内容, 并将网页内容返回到引擎. 下载器是建立在twisted高效的异步模型上.
4. 爬虫: 开发人员自定义的类, 用来解析response, 并且提取items, 获取再次发送requests.
5. 项目管道: 在items被提取后负责处理它们, 主要包括清理, 验证, 持久化操作(写入到数据库).

1.5 两大中间件

两大中间件:
1. 爬虫中间件: 位于爬虫与引擎之间, 只要工作室处理爬虫的输入requests和输出.(使用少)
2. 下载中间件: 位于引擎与下载器之间, 加代理头, 加头, 集成selenium.(使用多)开发者只需要在固定的地方写固定的代码即可.

2. Scrapy安装与基本的使用


2.1 安装

* 在cmd命令窗口执行
命令: pip install scrapy

image-20220720145838112

在windows上可能会出错.1. pip3 install wheel # 安装后, 便支持通过wheel文件安装软件wheel文件官网:https://www.lfd.uci.edu/~gohlke/pythonlibs2. pip3 install lxml3. pip3 install pyopenssl4. 下载twisted的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted5. 执行pip3 install 下载目录\Twisted...6. pip3 install pywin327. pip3 install scrapy8. 测试scrapy命令安装,终端中输入: scrapy * 如果不行在前面加上 py -m在cmd命令窗口下安装会将scrapy添加到环境变量,在PyCharm的Terminl下安装则不会将scrapy添加到环境变量, 需要添加py -m, 开头.

2.2 创建Scrapy项目

* 1. 创建项目命令: scrapy startproject 项目名 存放路径

PS P:\synchro\Project\pc3> scrapy startproject fisetscrapy P:\synchro\Project
New Scrapy project 'fisetscrapy', using template directory 'd:\python files\python38\lib\site-packages\scrapy\templates\project', created in:P:\synchro\ProjectYou can start your first spider with:cd P:\synchro\Projectscrapy genspider example example.com

* 2. 使用pycharm打开爬虫项目

2022-07-09_201905

* 3. 创建爬虫程序: scrapy genspider 爬虫名 爬取地址(https://可以省略)在spiders目录下多出一个爬虫名.py的文件

PS P:\synchro\Project\pc3> scrapy genspider chouti https://dig.chouti.com/
Created spider 'chouti' using template 'basic' in module:fisetscrapy.spiders.choutiPS P:\synchro\Project\fisetscrapy> scrapy genspider baidu www.baidu.com
Spider 'baidu' already exists in module:fisetscrapy.spiders.baidu

2022-07-09_201947

2.3 项目目录介绍

fisetscrapy 项目名|--fisetscrapy 项目包|--spiders 爬虫脚本包|--__init__.py|--chouti.py 自建爬虫脚本|--baidu.py 自建爬虫脚本|--__init__.py |--items.py |--main.py 执行爬虫脚本文件|--middlewares.py 中间件(爬虫, 下载中间键)|--pipelines.py 持久化相关|--settings.py 配置文件|--scrapy.cfg 上线配置

2.4 基本使用

爬虫脚本属性说明
allowed_domains 限制配置, 只解析设置的url下的地址, 网页中有其他网站的连接不会去解析.
start_urls 爬取的地址, 返回的页面数据被, parse方法的的response参数接收.

* 1. 修改爬虫脚本代码

import scrapyclass ChoutiSpider(scrapy.Spider):name = 'chouti'allowed_domains = ['dig.chouti.com']start_urls = ['http://dig.chouti.com/']def parse(self, response):# 展示获取的网页信息print(response.text)

* 2. 命令运行代码带运行日志: scrapy crawl 爬虫程序名不带运行日志: scrapy crawl 爬虫程序名 --nolog * 没有运行日志错误就不展示了...

* 3. 右键运行在项目目录下创建一个py文件( main.py), 在文件输入以下代码, 右击运行此代码,

from scrapy.cmdline import execute# execute(['命令', '参数', '运行的爬虫程序', '额外参数'])# 带运行日志执行
# execute(['scrapy', 'crawl', 'chouti'])# 不带运行日志执行
execute(['scrapy', 'crawl', 'chouti', '--nolog'])# 执行多个排着写即可
# execute(['scrapy', 'crawl', 'xxx', '--nolog'])

* 4. 爬取信息默认遵循网站的爬虫协议

from scrapy.cmdline import execute# 爬取百度网页信息, 不爬虫协议不予许爬取, 执行这个脚本获取不到任何信息
execute(['scrapy', 'crawl', 'baidu'])

2022-07-09_225215

* 5. 不遵循爬虫协议, 修改settings配置配置文件.

# settings.py# Obey robots.txt rules
ROBOTSTXT_OBEY = False

* 6. 再次执行爬虫脚本, 获取到网页信息

2022-07-09_225719

后面是凑字数, 为什么呢, 我写的内容都写在代码块中, 段落少于10行文章质量低!!!

一、在平台发布以下相关内容 审核将不予通过
1、违反法律法规和相关政策
违反宪法确定的基本原则,煽动抗拒或者破坏宪法、法律、行政法规实施;
危害国家统一、主权和领土完整,泄露国家秘密,危害国家安全,损害国家尊严、荣誉和利益,宣扬恐怖主义、极端主义;
诋毁民族优秀文化传统,煽动民族仇恨、民族歧视,侵害民族风俗习惯、歪曲民族历史和民族历史人物,损害革命领袖、英雄烈士形象,伤害民族感情,破坏民族团结;
煽动破坏国家宗教政策,宣扬宗教狂热,危害宗教和睦,伤害信教公民宗教感情,破坏信教公民和不信教公民团结,宣扬邪教、封建迷信;
危害社会公德,扰乱社会秩序,破坏社会稳定,宣扬淫秽色情、赌博、吸毒,渲染暴力、恐怖,教唆犯罪或者传授犯罪方法;
教唆、教授、组织他人进行违法乱纪活动,以非法民间组织名义活动的,宣传违法违规物品;
侵害未成年人合法权益或者损害未成年人身心健康;
侵犯他人隐私,侮辱或者诽谤他人,侵害他人合法权益;
侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利;
含有法律、行政法规、规章、条例以及任何具有法律效力之规范所限制或禁止的其它内容。
————————————————
版权声明:本文为CSDN博主「Python_21.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_46137324/article/details/126045143


推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
author-avatar
手机用户2502909797
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有