IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 给我爬!3天掌握Scrapy(一) -> 正文阅读

[Python知识库]给我爬!3天掌握Scrapy(一)

大家好,欢迎来到二哥的爬虫频道,本次二哥准备爆更三天给大家带来Scrapy教程,记得三连呦~

一、认识Scrapy

Scrapy是一个为了爬取网站数据,提供结构性数据而编写的应用框架,使用Scrapy时,我们使用少量的代码就能实现快速的抓取。

Scrapy爬取流程

Scrapy的爬取流程图如下所示:
在这里插入图片描述
Scrapy的三个重要内置对象

  • request请求对象
  • response响应对象
  • item数据对象

流程图解释

  • 引擎(Scrapy Engine):负责数据和信号在整个系统中的传递(核心)
  • 调度器(Scheduler):实现一个队列,存放引擎发过来的requests请求对象
  • 下载器(Downloader):发送引擎发过来的requests请求,下载网页内容, 并将网页内容返回
  • 爬虫(Spider):处理引擎发过来的response,提取自己想要的信息;提取url,并交给引擎
  • 管道(Pipeline):处理引擎传递过来的数据,进行数据持久化(例:存储数据到表格/数据库中)
  • 下载中间件(Downloader Middleware):可以自定义的下载扩展,比如设置User_Agent, Proxy
  • 爬虫中间件(Spider Middleware):可以自定义request请求和进行response过滤,类似下载中间件

Scrapy的工作流程如下

  1. 爬虫——>URL(Requests)——> 爬取中间件——>引擎——>调度器

对应图中(中间的绿色直线):Spiders将需要发送请求的Requests经过ScrapyEngine交给Scheduler

  1. 调度器——>Requests——>引擎——>下载中间件——>下载器

对应图中(右上角的绿色线):Scheduler处理后经过ScrapyEngine,Downloader Middlewares交给Downloader

  1. 下载器——>Reponses——>下载中间件——>引擎——>爬虫中间件——爬虫

对应图中(右下角的绿色线):Downloader向互联网发送请求,接收Reponses后经过ScrapyEngine,Spider Middlewares交给Spiders

  1. 爬虫——>Reponses——>引擎——>管道(保存数据)

Spiders处理返回到的Reponses,提取数据将数据通过ScrapyEngine交给ItemPipeline进行数据保存

  1. 当新的URL请求出现时,重复执行1234的过程,知道没有请求。

二、使用Scrapy

创建Scrapy项目

  • 安装模块:pip install scrapy
  • 创建Scrapy项目:scrapy startproject 文件夹名称

创建完成后会生成如下图所示的文件目录:
在这里插入图片描述

  • scrapy.cfg:项目的配置文件
  • items.py:项目的目标文件
  • pipelines.py:项目的管道文件
  • settings.py:项目的设置文件
  • spiders:存储爬虫代码

创建爬虫

创建好了项目之后,我们还需要创建爬虫让我们能够在里面编写爬虫代码,步骤如下。

  • cd到创建的文件夹下
  • 执行:scrapy genspider +<爬虫名字> + <爬取的域名>

举例:
cd Sp_1
scrapy genspider Cars_data 12365auto.com

执行完成后会在spiders文件夹下出现爬虫文件,文件内的格式如下:
在这里插入图片描述

编写爬虫

至此我们的准备工作就做好了,接下来就可以开始完善爬虫了。
完善代码(这里举一个最简单的小例子)

import scrapy


class CarsDataSpider(scrapy.Spider):
    name = 'Cars_data'
    allowed_domains = ['12365auto.com']
    start_urls = ['http://12365auto.com/']

    # 解析数据
    def parse(self, response):
        name_car = response.xpath(".//div[@class='in_cxsx_b'][1]/div[@class='in_wxc'][1]/dl[1]/dt/a/text()")
        item = {}
        item['name'] = name_car.extract()
        yield item

在进行parse的时候,我们可以直接使用scrapy中的response对象进行Xpath。
需要注意的是response.xpath方法的返回结果是一个类似list的类型,其中包含的是selector对象,操作和列表一样,但是获取结果的时候有一些额外的方法。
extract():返回一个包含有字符串的列表
extract_first():返回列表中的第一个字符串,列表为空没有返回None

代码最后需要使用yield函数让整个函数变成一个生成器

此时我们可以尝试进行数据爬取了,在Terminal运行如下命令:

scrapy crawl name

注意:name是你创建爬虫的名字,也就是爬虫文件中name=""中的内容
看到没有报错的长串输出就证明运行成功了。

保存数据

保存数据的时候我们主要会使用pipeline来进行。

  • 开启pipeline

找到类似如下的代码取消注释(初始位置在65行左右):

ITEM_PIPELINES = {
   'Sp_1.pipelines.Sp1Pipeline': 300,
}
  • 运行

最终在terminal中运行如下脚本即可保存文件为Json

scrapy crawl dmoz -o items.json

请添加图片描述

展开阅读全文
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 16:32:42  更:2021-07-28 16:32:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/25 14:22:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计