当前位置: 首页 > news >正文

Scrapy爬虫异步框架(一篇文章齐全)

1、Scrapy框架初识

2、Scrapy框架持久化存储(点击前往查阅)

3、Scrapy框架内置管道(点击前往查阅)

4、Scrapy框架中间件(点击前往查阅)

Scrapy 是一个开源的、基于Python的爬虫框架,它提供了强大而灵活的工具,用于快速、高效地提取信息。Scrapy包含了自动处理请求、处理Cookies、自动跟踪链接、下载中间件等功能。

Scrapy框架的架构图(先学会再来看,就能看懂了!)

一、安装

在Pycharm终端中使用以下命令安装 Scrapy:

pip install scrapy

 

二、创建 Scrapy 项目

在Pycharm终端中使用以下命令创建一个 Scrapy 项目:

scrapy startproject project_name

其中 project_name 是你文件夹的名字文件名只能以字母开头,只能包含数字、字母、下划线),下面是创建好的目录结构(.venv 这个文件无视,这个是我配置的虚拟环境,这个地方不做多讲解,想了解点击这:虚拟环境讲解)。

三、创建爬虫项目

在Pycharm终端中使用以下命令创建一个 Scrapy 项目:

scrapy genspider spider_name example.com

命令讲解:

  •  spider_name:是你的爬虫文件名(名字不能和scrapy项目重复
  • example.com:初始设置的网址(这个随便填写,等下可以改的,可以设置www.xxx.com)

注意:需要先进入你创建的Scrapy项目中,例如:我这个文件名是:CSDN

对比下绿色横线的文件目录就发现不一样了。

⬇️⬇️⬇️执行的命令演示⬇️⬇️⬇️

3.1:创建好的目录结构

 

 四、编写爬虫

4.1:setting设置

设置 setting 中需要改动的地方(这个是基本的设置,其他的根据需要来开启)

4.2:代码初识

打开创建好的爬虫文件(baidu.py)进入编写我们的程序:

初始的是这样的

代码的含义:          

4.3:数据解析(parse函数)

演示网站:(不可干预人家网站的正常运行!!!家常菜做法大全有图_家常菜菜谱大全做法_好吃的家常菜_下厨房【下厨房】家常菜栏目为您提供最新的家常菜做法大全、家常菜菜谱大全和步骤,让你也可以轻松做出好吃的家常菜icon-default.png?t=N7T8https://www.xiachufang.com/category/40076/

需求:第一页的所有的菜名和作者

最终代码:

import scrapyclass BaiduSpider(scrapy.Spider):# 爬虫文件的唯一标识(就是你创建的爬虫文件夹名字)name = "baidu"# 允许的域名,这个代表你只能访问这个网址的子域名,其他的都会禁止(这个我们会注释掉,不会打开)# allowed_domains = ["www.xxx.com"]# 起始的url列表,网址可以随便放,可以放多个,列表中的url都会被框架进行异步请求发送。start_urls = ["https://www.xiachufang.com/category/40076/"]# 数据解析:parse调用的次数取决于start_urls列表元素的个数def parse(self, response):  # response参数就表示响应对象# 利用xpath解析:(scrapy内置xpath,无需另外导入)li_list = response.xpath('//div[@class="pure-u-3-4 category-recipe-list"]//ul/li')for li in li_list:# 1、scrapy中的xpath会返回Selector对象,我们需要的数据在该对象data属性中(extract可以实现该功能,)# 2、extract_first()就是取第一个,因为文本两边有空格,所以.strip() 可以去除两侧的空格title = li.xpath('.//p[1]/a/text()').extract_first().strip()author = li.xpath('.//p[4]/a/text()').extract_first().strip()print(title, author)

输出结果:

五、运行爬虫

使用以下命令运行你的 Scrapy 爬虫:

scrapy crawl myspider

命令讲解

  • myspider:你的爬虫文件名字(例如我的是:baidu)

相关文章:

Scrapy爬虫异步框架(一篇文章齐全)

1、Scrapy框架初识 2、Scrapy框架持久化存储(点击前往查阅) 3、Scrapy框架内置管道(点击前往查阅) 4、Scrapy框架中间件(点击前往查阅) Scrapy 是一个开源的、基于Python的爬虫框架,它提供了…...

基于Hadoop架构的多重分布式BP神经网络的短期负荷预测方法

点我完整下载:基于Hadoop架构的多重分布式BP神经网络的短期负荷预测方法.docx 基于Hadoop架构的多重分布式BP神经网络的短期负荷预测方法 "A Short-term Load Forecasting Method based on Multi-distributed BP Neural Network Architecture with Hadoop Fram…...

Oracle查询数据库中当前用户每个表的数据条数

Oracle查询数据库中当前用户每个表的数据条数 select t.table_name,t.num_rows from user_tables t一般情况下这条语句就可查出想要结果 如果不行 请执行以下脚本 create or replace function count_rows(table_name in varchar2,owner in varchar2 default null)return…...

Windows从源码构建tensorflow(离线编译)

由一开始的在线编译,到后面的离线编译,一路踩坑无数,历经整整6个半小时,终于编译成功!在此记录一下参考过的文章,有时间整理一下踩坑记录。 一、环境配置 在tensorflow官网上有版本对应关系 win10 bazel …...

JMeter处理接口签名sign

写接口脚本的时候,很多接口涉及到签名,今天介绍下用JMeter编写签名脚本的方法。 举个例子,开启红包接口,请求方式为post POST /v1/api/red/open json请求参数 { "red_id":1, "timestamp":"1667033841…...

Android : Java中创建线程的几种方式_简单应用

主方法 MainTest.java package com.example.mythread;import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;public class MainTest {public static void main(String[] data){ // 以下的方…...

C# Onnx 特征匹配 DeDoDe 检测,不描述---描述,不检测

目录 介绍 效果 模型信息 项目 代码 下载 介绍 github地址:https://github.com/Parskatt/DeDoDe DeDoDe 🎶 Detect, Dont Describe - Describe, Dont Detect, for Local Feature Matching The DeDoDe detector learns to detect 3D consisten…...

第十六章 处理空字符串和 Null 值

文章目录 第十六章 处理空字符串和 Null 值空字符串和 Null 值的默认映射导出值控制空元素的形式 第十六章 处理空字符串和 Null 值 类和属性参数 XMLUSEEMPTYELEMENT XMLIGNORENULL XMLNILNOOBJECT XMLNIL 空字符串和 Null 值的默认映射 下表总结了空字符串和 null 值的…...

MYSQL 处理重复数据

文章目录 前言防止表中出现重复数据统计重复数据过滤重复数据删除重复数据在这里插入代码片后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正…...

世岩清上:未来科技展览的策展视野

面对科技未来,策展视野的核心在于把握趋势,理解人性,并充分运用科技手段提升观众的体验。以下是我对未来科技展览的策展视野。 一、以人为本的设计理念 科技发展的最终目的是服务于人类,提升人们的生活质量。因此,展…...

如何理解2023vivo开发者大会,使用Rust语言编写蓝河操作系统(BlueOS)?

在2023年vivo开发者大会上,vivo宣布使用Rust语言编写其蓝河操作系统(BlueOS)。 什么是Rust语言? Rust 是一种开放源代码系统编程语言,可用于开发高效、安全的软件。 使用 Rust 可管理内存并控制其低级详细信息。 但你…...

Android flutter this and base files have different roots

类似经历者 Android build fails with certain plugins if project is in a different drive (from sdk) 错误描述 我是windows系统,下载 flutter sdk 我是放在D盘,flutter项目是放在E盘,flutter 执行 pub get的时候,会在我C盘…...

Excel动态选择某一行/列的最后一个数据

选择列的最后一个数据&#xff1a; 以A列为例&#xff0c;使用&#xff1a; LOOKUP(1,0/(A:A<>""),A:A)选择行的最后一个数据&#xff1a; 以第3行为例&#xff0c;使用&#xff1a; LOOKUP(1,0/(3:3<>""),3:3)示例程序 列最后一个数据&a…...

扫描条形码到电脑:Barcode to pc 4.6.3 Crack

像专业人士一样使用条形码将条形码发送到 PC 排名第一的智能手机扫描应用程序 将条形码即时发送到计算机程序并自动执行任务的最简单方法 受到全球 500,000 多名用户的信赖 条形码到 PC&#xff1a;Wi-Fi 扫描仪应用程序&#xff0c;条码到 PC&#xff1a;适用于 Android 和 i…...

从0到0.01入门 Webpack| 003.精选 Webpack面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

[数据结构]-红黑树

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、红黑树的…...

Android 13.0 Launcher3 app列表页桌面图标按安装时间排序

1.概述 在13.0的系统rom定制化开发中,在对Launcher3进行功能开发时,系统默认的app列表页排序是安装app名称进行排序的, 由于功能的需要要求按照app安装时间进行排序,这就需要找到相关的排序地方,进行排序方式的修改就能完成这个功能 2.Launcher3 app列表页桌面图标按安装…...

QFont如何设置斜体|QlineEdit设置只能输入数字|QThread::finished信号发出后worker未调用析构函数

QFont如何设置斜体 要设置 QFont 的斜体,你可以使用 setItalic() 方法。以下是一个示例代码: #include <QApplication> #include <QLabel> #include <QFont> int main(int argc, char *argv...

中伟视界:创新解决方案,搭建自适应的AI算法模型训练平台

搭建AI算法模型自训练平台是当今人工智能领域的热门话题&#xff0c;但是其中存在着许多技术难点需要克服。 自训练平台需要具备高效的算法模型&#xff0c;这就要求能够处理庞大的数据量并进行高速计算。 平台需要具备强大的数据管理及存储能力&#xff0c;以满足训练过程中的…...

UML建模图文详解教程08——部署图

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;《UML面向对象分析、建模与设计&#xff08;第2版&#xff09;》吕云翔&#xff0c;赵天宇 著 部署图概述 部署图(deployment diagram)也被译作配置…...

【多模态大模型实时处理能力跃迁指南】:从200ms延迟到8ms端到端推理,20年架构师亲测的5大硬核优化路径

第一章&#xff1a;多模态大模型实时处理能力跃迁的底层认知 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的实时性并非仅由推理延迟决定&#xff0c;而是感知-对齐-生成三阶段协同压缩与硬件感知调度共同作用的结果。传统单模态优化范式在跨模态token动态对齐…...

胡桃工具箱:让你的原神游戏体验提升300%的智能助手终极指南

胡桃工具箱&#xff1a;让你的原神游戏体验提升300%的智能助手终极指南 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 &#x1f9f0; / Multifunctional Open-Source Genshin Impact Toolkit &#x1f9f0; 项目地址: https://gitcode.com/GitHub_Trending/sn/Sna…...

全国高校GIS技能大赛-对大一学生的建议

对于大一学生来说&#xff0c;参加第十八届全国高校GIS技能大赛是一个极佳的起点。作为一名大一新生&#xff0c;虽然专业课才刚刚起步&#xff0c;但通过大赛“以赛促学”是跨越式提升专业能力的捷径。以下是针对大一学生参加该赛事的建议与指导方案&#xff1a;一、 准确定位…...

pd.to_numeric()实战:从数据清洗到内存优化的类型转换全解析

1. 为什么需要类型转换&#xff1f;从销售数据乱象说起 刚接手一份销售数据时&#xff0c;我经常遇到这样的混乱场景&#xff1a;报表里的"销售额"列竟然显示为object类型&#xff0c;仔细一看发现里面混着"1,200"、"1500"这样的字符串&#xff…...

Cadence 17.4 原理图绘制避坑指南:从Capture快捷键到DRC检查的完整流程

Cadence 17.4 原理图绘制避坑指南&#xff1a;从Capture快捷键到DRC检查的完整流程 刚接触Cadence 17.4的工程师常会遇到这样的困境&#xff1a;明明在其他EDA工具上能快速完成的操作&#xff0c;在这里却要反复摸索。本文将带你避开那些官方文档未提及的"暗坑"&…...

软件报告管理中的自动化生成

软件报告管理中的自动化生成&#xff1a;效率与精准的革新 在快节奏的软件开发与运维中&#xff0c;报告管理是团队协作、问题追踪和决策支持的核心环节。传统的手动报告生成不仅耗时耗力&#xff0c;还容易因人为疏忽导致数据错误。随着自动化技术的普及&#xff0c;软件报告…...

舍弗勒与珞石机器人签订战略合作协议

、美通社消息&#xff1a;4月7日&#xff0c;专注驱动技术的科技公司舍弗勒与中国智能机器人领军企业珞石机器人签订战略合作协议。双方将围绕人形机器人关节模组等核心零部件的技术研发、产品供应及场景落地展开全面合作&#xff0c;携手共筑具身智能产业新生态&#xff0c;加…...

从Prompt工程 到 Harness 工程的实践

1&#xff0c;提示词工程-Prompt Engineering 提示词工程的本质很直接——"怎么说"决定了 AI "怎么做"。LLM 是接龙式生成&#xff0c;上下文决定输出方向。你描述得越清楚&#xff0c;它的结果越准确。 &#x1f3af; 三段式起步 角色&#xff1a;你是一…...

03、对比串口、以太网,解析汽车为何首选 CAN 总线

001、通信基石:串口、以太网与CAN总线技术概览与对比引言 凌晨三点,实验室的示波器还亮着。我盯着屏幕上那串时有时无的UART数据,咖啡已经凉透——某个传感器的数据包每隔十几分钟就丢一帧,产线测试组明天一早就要报告。这种问题太典型了:线缆长了点,环境干扰大了点,波…...

从零开始:用SillyTavern打造你的专属AI伙伴

从零开始&#xff1a;用SillyTavern打造你的专属AI伙伴 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 想象一下&#xff0c;你正在和一位虚拟朋友聊天——她能记住你的喜好&#xff0c;理…...