scrapy分页抓取网页(制作Scrapy爬虫一共需要4步:新建项目(scrapy))
优采云 发布时间: 2021-10-09 23:11scrapy分页抓取网页(制作Scrapy爬虫一共需要4步:新建项目(scrapy))
Scrapy 是一个用 Python 编写的应用框架,用于抓取 网站 数据并提取结构化数据。
Scrapy 常用于一系列程序,包括数据挖掘、信息处理或存储历史数据。
通常我们可以通过Scrapy框架轻松实现爬虫抓取指定网站的内容或图片。
Scrapy 架构图(绿线为数据流)
Scrapy 操作流程
代码写好,程序开始运行...
注意!只有当调度器中没有请求时,整个程序才会停止,(即对于下载失败的 URL,Scrapy 会重新下载。)
制作一个Scrapy爬虫一共需要4步:新建项目(scrapy startproject xxx):新建一个爬虫项目,指定目标(写items.py):指定要爬取的目标, make a spider (spiders/xxspider.py) ): 制作一个爬虫并开始爬取网络存储内容 (pipelines.py): 设计一个管道来存储爬取的内容 安装 Windows 安装方法
升级pip版本:
pip install --upgrade pip
通过pip安装Scrapy框架:
pip install Scrapy
Ubuntu 安装方法
安装非 Python 依赖项:
sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
通过pip安装Scrapy框架:
sudo pip install scrapy
Mac OS 安装方法
对于Mac OS系统,由于系统本身会引用内置的python2.x库,默认安装的包是不能删除的,但是可以使用python2.x来安装Scrapy会报错,使用python3.x安装也是报错。终于没有找到直接安装Scrapy的方法,所以就用另一种安装方式来讲解安装步骤。解决方案是使用virtualenv。安装。
$ sudo pip install virtualenv
$ virtualenv scrapyenv
$ cd scrapyenv
$ source bin/activate
$ pip install Scrapy
安装完成后,在命令终端输入scrapy,提示类似如下结果,表示安装成功。
介绍案例研究目标一. 新项目(scrapy startproject)
在爬取之前,必须创建一个新的 Scrapy 项目。进入自定义项目目录,运行以下命令:
scrapy startproject mySpider
其中mySpider为项目名,可以看到会创建一个mySpider文件夹,目录结构大致如下:
简单介绍一下各个主文件的作用:
mySpider/
scrapy.cfg
mySpider/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...
这些文件是:
二、明确目标(mySpider/items.py)
我们打算获取网站中所有讲师的姓名、职称和个人信息。
打开 mySpider 目录下的 items.py。
Item 定义了一个结构化的数据字段,用于保存抓取到的数据,有点像 Python 中的 dict,但提供了一些额外的保护以减少错误。
可以通过创建scrapy.Item类并定义scrapy.Field类型的类属性来定义Item(可以理解为类似于ORM的映射关系)。
接下来,创建一个 ItcastItem 类并构建一个项目模型。
三、制作爬虫(spider/itcastSpider.py)
爬虫功能需要分为两步:
1. 爬取数据
在当前目录下输入命令,会在mySpider/spider目录下创建一个名为itcast的爬虫,并指定爬取域的范围:
scrapy genspider itcast "itcast.cn"
打开mySpider/spider目录下的itcast.py,默认添加如下代码:
import scrapy
class ItcastSpider(scrapy.Spider):
name = "itcast"
allowed_domains = ["itcast.cn"]
start_urls = (
'http://www.itcast.cn/',
)
def parse(self, response):
pass
其实我们也可以创建itcast.py,自己写上面的代码,不过使用命令可以省去写固定代码的麻烦
要创建Spider,您必须使用scrapy.Spider 类创建一个子类,并确定三个必需属性和一个方法。
name = "":此爬虫的标识名称必须是唯一的。不同的爬虫必须定义不同的名称。
allow_domains = [] 是要搜索的域名范围,即爬虫的限制区域。规定爬虫只爬取该域名下的网页,不存在的网址将被忽略。
start_urls = ():已爬取的 URL 的祖先/列表。爬虫从这里开始抓取数据,所以第一次下载数据会从这些url开始。其他子 URL 将从这些起始 URL 继承。
parse(self, response):解析的方法。每个初始 URL 下载后都会调用它。调用时,每个 URL 返回的 Response 对象作为唯一参数传入。主要功能如下:
负责解析返回的网页数据(response.body),提取结构化数据(生成item)