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)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库——存储函数(介绍、案例)

目录 介绍 案例 介绍 存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的。具体语法如下: CREATE FUNCTION 存储函数名称 ([ 参数列表 ]) RETURNS type [characteristic ...] BEGIN-- SQL语句RETURN ...;END ; characteristic说明&#xf…

CleanMyMac X4.14.5Crack最新Mac电脑清理优化最佳应用

CleanMyMac X 4.14.5是用于清理和优化Mac的最佳应用程序和强大工具。它看起来很棒而且很容易理解。该软件可以清理、保护、优化、稳定和维护您的 Mac 系统。您可以立即删除不必要的、不寻常的、无用的垃圾文件、损坏的文件垃圾,并释放大量内存空间。此外&#xff0c…

异常与包的导入

1.什么是异常 异常就是程序运行的过程中出现了错误 2.捕获异常 如果遇到了bug,可能会出现两种情况: 整个程序停止运行对bug进行提醒,继续运行 在可能发生异常的地方,进行捕获,当出现异常的时候提供解决方案 try:可…

继承性和多态性实验

继承性和多态性实验 一、实验题目二、实验目的三、实验内容与实现1:【实验内容】2:【实验实现】雇员类(Employee)的实现,如下图所示:2:经理类(Manager)的实现,如下图所示…

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

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

阻塞队列

文章目录 阻塞队列BlockingQueue实现阻塞队列生产者消费者模型 阻塞队列 阻塞队列是什么呢? 阻塞队列是一种特殊的队列,满足队列的基本要求 - 先进先出。同时阻塞队列使一种线程安全的数据结构。不过阻塞队列相较于普通队列也有着它的特殊之处。 线程安…

蓝桥杯第2119题 特殊时间 C++ 思维暴力

题目 思路和解题方法 1110 代表 1110年11月10号11点10分1110 4*4*4 有0111 1011 1101 1110 可以符合年 月日 时分秒的都有4种例如 1113有1113 1131 1311 3111 年份符合月日只有11 13 时分秒 只有11 13 11 31 13 11 无31 11 c 代码 #include <bits/stdc.h> using…

Kotlin学习——kt里的集合List,Set,Map List集合的各种方法之Int篇

Kotlin 是一门现代但已成熟的编程语言&#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作&#xff0c;并提供了多种方式在多个平台间复用代码&#xff0c;以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

hdlbits系列verilog解答(exams/m2014_q4i)-45

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 实现以下电路&#xff1a; 二、verilog源码 module top_module (output out);assign out 1b0;endmodule三、仿真结果 转载请注明出处&#xff01;

MyBatis的功能架构,MyBatis的框架架构设计,Mybatis都有哪些Executor执行器,Mybatis中如何指定使用哪一种Executor执行器

文章目录 MyBatis的功能架构是怎样的把Mybatis的功能架构分为三层&#xff1a; **MyBatis的框架架构设计**是怎么样的架构图如下Mybatis都有哪些Executor执行器&#xff1f;它们之间的区别是什么&#xff1f;Mybatis中如何指定使用哪一种Executor执行器&#xff1f; MyBatis的功…

1.1 C语言之入门:使用Visual Studio Community 2022运行hello world

1.1 使用Visual Studio Community 2022运行c语言的hello world 一、下载安装Visual Studio Community 2022 与 新建项目二、编写c helloworld三、编译、链接、运行 c helloworld1. 问题记录&#xff1a;无法打开源文件"stdio.h"2. 问题记录&#xff1a;调试和执行按钮…

CSP认证2023-09:坐标变换(其一)、坐标变换(其二)、梯度求解,python满分代码解答

CSP认证2023-09&#xff1a;坐标变换(其一)、坐标变换&#xff08;其二&#xff09;、梯度求解&#xff0c;python满分代码解答 目录 一、坐标变换&#xff08;其一&#xff09; 问题描述 输入和输出 思路 代码和结果 c代码 python代码 二、坐标变换&#xff08;其二&am…