一、网页有关知识
-
http请求有两种
get请求
地址栏输入的请求
参数直接放在url后面
(参数长度有限制,安全性较低)
post请求
先建立连接,数据后发过去
数据放在请求体里面
(对数据长度没有限制,安全性较高) -
响应码
200 --成功
300 --重定向
400 --网页找不到
500 --服务器错误
二、Scrapy
-
简介
scrapy是用python实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。
scrapy常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
通常我们可以很简单的通过scrapy框架实现一个爬虫,抓取指定网站的内容或图片。
Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器).
Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。
Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)
-
制作scrapy爬虫的步骤:
1.新建项目(scrapy startproject xxx):创建新的爬虫项目
2.明确目标(编写items.py):明确抓取的目标
3.制作爬虫(spiders/xxxspider.py):制作爬虫开始爬取网页
4.存储内容(pipelines.py):设计管道存储爬取内容 -
小例子
(1)新建项目
其中, mySpider 为项目名称,可以看到将会创建一个 mySpider 文件夹,目录结构大致如下(test.py是后来添加的):
这些文件分别是:
scrapy.cfg: 项目的配置文件。
mySpider/: 项目的Python模块,将会从这里引用代码。
mySpider/items.py: 项目的目标文件。
mySpider/pipelines.py: 项目的管道文件。
mySpider/settings.py: 项目的设置文件。
mySpider/spiders/: 存储爬虫代码目录。(2)在test.py中添加
import scrapy # 定义网络爬虫类 class ItcastSpider(scrapy.Spider): # 每个爬虫必须要有一个名字 name = "test" url = "https://www.jd.com/" # 入口方法,当爬虫启动后会先执行这个方法 def start_requests(self): yield scrapy.Request(url=self.url, callback=self.parse) def parse(self, response): print(response.text)
(3)在__init__.py中添加(注意是二级目录下的文件)
from scrapy import cmdline # 指定名字启动爬虫 cmdline.execute("scrapy crawl test".split())
(4)执行__init__.py