目录
1、创建爬虫项目 scrapy startproject 项目名字 注意: 项目名字不能出现中文,也不能以数字开头。
一、scrapy介绍
简单介绍一下scrapy吧。
Scrapy 框架是一个基于Twisted的一个异步处理爬虫框架,应用范围非常的广泛,常用于数据采集、网络监测,以及自动化测试等。
Scrapy 框架主要由五大组件组成,它们分别是:
- 调度器(Scheduler) :它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
- 下载器(Downloader) :负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
- 爬虫(Spider):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)
- 实体管道(Item Pipeline):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
- Scrapy引擎(Scrapy Engine):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
这么说大家可能还是不太明白,直接上图(此图来自一位bilibili的up主):
步骤如下:
注:红色字体部分是给下一个步骤的数据
spiders url --》引擎(Scrapy Engine)url --》调度器 (Scheduler)请求 --》引擎(Scrapy Engine)请求 --》下载器(Downloader) 请求 --》互联网 数据 --》引擎(Scrapy Engine)数据 --》spiders 解析数据结果 --》引擎(Scrapy Engine)if(就交给管道下载数据) if(有 url 则重复上面步骤) 注意的一点是连个可以同时存在也可以单独存在
话不多说,直接开始干!!!!
二、爬取步骤
这次要爬取的是当当网中的电子书
点击此处,进入网址,可以看到很多的书。而我们需要的是数据:书的图片,书名,作者,价格
1.爬取思路
首先查看有多少页,会发现,这个网站没有页数,究其原因,是一个滚动条的 ajax 请求,当滚动条滑倒最底下的时候,就发出一条请求。说这么一堆可能听不懂,上图。
这时候你会发现里面多了很多条请求,我们直接看到最上面一条,因为是ajax的请求,肯定是一个json的一个嵌套格式,直接打开英文是”response“,中文是“响应”,我的是中文所以就点击响应,看看有没有我们所需要的数据。
有数据吧,那就是他了。
http://e.dangdang.com/media/api.go?action=mediaCategoryLeaf&promotionType=1&deviceSerialNo=html5&macAddr=html5&channelType=html5&permanentId=20220424124301850188613824148624365&returnType=json&channelId=70000&clientVersionNo=6.8.0&platformSource=DDDS-P&fromPlatform=106&deviceType=pconline&token=&start=63&end=83&category=QCWX&dimension=dd_sale&order=0
复制url 放到搜索栏里面在进行请求一次,检验一下是不是正确的。
结果如下,密密麻麻的数据,有密集恐惧症的估计得没,而我们今天的任务就是从这些数据中提取出我们想要的数据。
要多页爬取,所以我们还要刚才一样在操作一次,下一条的请求URL,和这条url有什么区别。
这时候就有两条url
http://e.dangdang.com/media/api.go?action=med