【scrapy】——个人笔记

scrapy简介

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等。

本文简单的叙述了如何使用scrapy,设计并运行一个简单的案例,以及scrapy框架的各个部分的功能和作用,方便大家使用拓展。并对scrapy有一个完整的认识。

在使用scrapy框架之前,最好已经掌握基本的requests爬取方法,以及xpath、BS、css、正则表达式等解析方法的一种。

scrapy爬虫整体框架

以下是使用scrapy爬虫框架建立并运行爬虫项目的整个流程,之后会使用一个案例,按照这个流程来实现一个简单的操作。

第一,更改目录,改成要建立爬虫工程的文件目录,创建爬虫。

-- cd pycodes                                   (创建一个目录,存放工程文件) 
-- scrapy startproject python123demo            (创建工程,工程名称) 
-- cd python123demo                             (转移到工程目录中) 
-- scrapy genspider demo python123.io           (生成一个爬虫,叫demo,最后一个为域名,只能爬取这个域名一下的相关链接)

第二,修改demo的代码,完善爬虫的功能,配置爬虫文件。和常规爬虫的代码类似。

  --sitting相关配置,-- ROBOTSTXT = FALSE   -- 任意位置加上:LOG_LEVEL = 'ERROR'-- 改use-agent: 复制粘贴,该游览器代理-- 开启管道,可以多通道处理:  'taobao.pipelines.TaobaoPipeline': 300,数值表示的是优先级,数值越小,优先级越高--parse解析response-- 直接使用response.xpath()方法,xpath语法和正常的一样处理-- xpath返回的是列表,列表元素是selector类型,使用'.extract()'方法转换成字符串,列表则是转换每一个列表元素转换成字符串,还有extract_first()方法-- 使用content= ''.join(content),用空白字符连接content中的元素,实现一个链接的功能。  --item,每次yield item就会调用一次item类-- spider中导入item类-- items创建管道: # name = scrapy.Field()-- 在parse中引入管道: -- item = Python1Item()-- 把数据提交给item: item['title'] = a.xpath('p/text()').extract()-- 将item提交给管道:-- yield item--pipelines操作:持久化处理,多个管道类似操作,新建一个管道类,打开文件一次,写入N次,关闭一次: -- 初始有一个process_item方法,用来处理item对象-- 承接item对象的数据:      movie = item['movie']-- 打开操作:-- 重写一个父类的方法,只会被爬虫调用一次:-- def open_spider(self,spider):-- 关闭文件操作:-- 重写一个父类方法:-- def close_spider(self,spider):

整体的流程图如下所示(官网):
在这里插入图片描述

第三,运行爬虫:scrapy crawl demo(这个为爬虫的名字)

图片爬取案例

本文使用pycharm编辑器,scrapy框架实现图片的爬取,关于scrapy框架的安装,之后会进行补充,没有其他特殊的第三方库。

- 1.1 新建项目

打开pycharm,在Terminal中,在指定的工作目录下建立爬虫项目:
在这里插入图片描述

cd path   #转到某个path下
scrapy startproject Pic     #在该path下新建一个爬虫项目,名称叫做Pic

然后再工作目录下,就可以看到生成的Pic文件夹,里面包含了一些配置文件,文件的具体作用和功能之后会详细描述:
在这里插入图片描述
这样,第一步就完成了。

- 1.2 生成爬虫文件

先转到spider文件夹中,再生成spider文件:

cd Pic      #转到Pic文件夹中
scrapy genspider download baodu.com     #生成spider,名称为:download,爬取的域名为:baidu.com

在这里插入图片描述
上面两个操作,scrapy也给出了提示:you can start your first spider with…,可以在工作目录下看到新建的download.py文件。

这样已经完成了项目的建立和spider文件的建立,接下来就是修改相关的配置文件,达到我们的目的。

- 1.3 修改spider

在这里插入图片描述
初始的download.py是这样的,我们要修改相关的参数,并解析网页,获取图片,并传递给item。

删去allowed_domains,允许域名表示我们只能在该域名下爬取,为了取消限制,故删去。

以彼岸图网为例,把start_urls改成https://pic.netbian.com/,然后写parse,获取图片。解析图片和常规的requests相同,在此不做详细介绍。

- 2.1 修改配置文件

在Pic文件夹中,有setting、item、pipeline、middleware、init五个文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3245608.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

HEVC编码中的MPM(最可能模式,Most Probable Mode)

简介 最近看到有文章用视频编码时的MPM参数来映射特征并用于数字取证,故做该文章记录。 HEVC(高效视频编码)中的MPM(最可能模式,Most Probable Mode)用于预测帧内块的模式,以提高编码效率并减…

【python】PyQt5的窗口界面的各种交互逻辑实现,轻松掌控图形化界面程序

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【ABB】示教器可编程按钮的配置

【ABB】示教器可编程按钮的配置 操作流程演示 操作流程 首先我要配置的是如图所示控制器上的四个按钮,这四个按钮是可以自定义功能的。 点击【菜单】点击【Control Panel】点击【ProgKeys】即可配置对应按键功能 演示 点击【菜单】 点击【配置可编程按键】 这里…

12306高铁票如何打印电子发票?

高铁票报销凭证电子版如何打印? 高铁票报销目前没有电子发票形式,只有纸质版报销凭证,不过虽然没有电子版报销凭证,但是可以通过多种方式获取纸质版报销凭证。 报销凭证只能打印一次,丢失不能补打,请妥善…

cpp 强制转换

一、static_cast static_cast 是 C 中的一个类型转换操作符,用于在类的层次结构中进行安全的向上转换(从派生类到基类)或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换(即从派生…

Stable Diffusion教程|视频转绘有手就会Ebsynth Utility应用详解

过去这几个月,相信很多同行都已经见识到了AIGC强大的风格化绘图能力,不仅能够做出高品质的美术资产,还可以将制作效率大幅提高,这也是AI概念如今在资本市场受热捧的重要原因。 不过,目前我们所见到的大部分图形&#…

把当前img作为到爷爷的背景图

(忽略图大小不一致,一般UI给的图会刚好适合页面大小,我这网上找的图,难调大小,我行内的就自己随便写的宽高),另外悄悄告诉你最后有简单方法~~ 先来看看初始DOM结构代码 …

支付宝低代码搭建电商小程序,无需编程,可视化操作

大家好,我是小悟 在数字化浪潮的推动下,为了更快速、高效地搭建电商小程序,支付宝低代码平台凭借其独特优势,为商家提供了便捷的解决方案。 支付宝低代码平台犹如一座精心打造的智慧工坊,让电商小程序的搭建变得轻而易…

硕博电子智能控制器、触摸显示屏在集装箱跨运车上的应用

港口跨运车,又称跨运车或轮胎式龙门吊(RTG),专门用于集装箱码头的装卸和搬运作业,能够迅速完成集装箱在码头前沿、堆场区域以及仓库之间的运输和堆垛,大幅度缩短了装卸周期,提高了港口物流周转效率。 现代跨运车往往配…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓:先描述,再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下: 输入设备&a…

ServiceNow UI Jelly模板注入漏洞复现(CVE-2024-4879)

0x01 产品简介 ServiceNow 是一个业务转型平台。通过平台上的各个模块,ServiceNow 可用于从人力资源和员工管理到自动化工作流程或作为知识库等各种用途。 0x02 漏洞概述 由于ServiceNow的Jelly模板输入验证不严格,导致未经身份验证的远程攻击者可通过构造恶意请求利用,在…

高职软件技术实训室

一、高职软件技术实训室建设背景 随着“加快数字化发展,建设数字中国”这一战略目标的深入实施,软件技术作为数字经济的核心引擎,其战略地位愈发显著。在这一时代背景下,高职教育作为培养高素质、高技能人才的重要阵地&#xff0…

如何在Orcale首页定位到The Java® Virtual Machine Specification页面?

目标地址:https://docs.oracle.com/javase/specs/jls/se8/html/index.html 1. 在Orcale首页菜单栏中选择 Resources ⇒ Java Downloads 2. 往下滑,找到 Online Documentation 选项,点进去 3. 点击 Specifications 下的 Language VM 选项 5…

Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)

基础介绍 Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:网络地址转换(Network Address Translate)数据包内容修改以及数据包过滤的防火墙功能。Netfliter框架不仅仅在ipv4中有应用,bridge,ipv4&#…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(一)-3GPP TS 23.256 技术规范概述

3GPP TS 23.256 技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及A2X(Aircraft-to-Everything)服务的支持。 3GPP TS 23.256 技术规范: 以下是文档的核心内容总结: UAV系…

在 PostgreSQL 里如何处理数据的归档和清理过程中的数据完整性验证?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何处理数据的归档和清理过程中的数据完整性验证 在 PostgreSQL 里如何处理数据的归…

数据驱动未来,Xinstall全渠道统计方案引领行业变革

在这个信息爆炸的时代,App市场的竞争日益激烈。对于每一个开发者或营销人员来说,掌握准确、全面的数据分析能力,是提升产品竞争力、优化营销策略的关键。然而,面对投放渠道的分散、数据打通的困难以及作弊流量的困扰,许…

RocketMQ源码学习笔记:消费者启动流程

这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、前置知识1.1、pull和push型消费者1.2、消息CommitLog到ConsumeQueue1.3、自动创建的重试主题1.4、广播型消费和集群型消费中offset的存储位置 2、消费中的启动流程2.1、Preview2.2、校验&…

《AIGC:智能创作时代》—开启智能创作的全新时代

在人工智能发展的漫长历程中,如何让机器学会创作一直被视为难以逾越的天堑。然而,人类的创造力终将赋予机器创造力,把世界送入智能创作的新时代。 书名:《AIGC:智能创作时代》,作者:杜雨、张孜铭…

150个pb网站模板(都是成品网站,上传php空间即可使用),建站必备

一网友提供的150个pb网站模板,其实就是成品网站,上传php空间即可使用,属于建站公司或者建站开发人员必备的资源。 一共150个基于pb的成品网站,基本上都可以找到适应你手头客户需要的一款,简单修改一下即可交活收钱了。…