scrapy分页抓取网页(制作Scrapy爬虫一共需要4步:新建项目(scrapy))
优采云 发布时间: 2022-03-05 09:24scrapy分页抓取网页(制作Scrapy爬虫一共需要4步:新建项目(scrapy))
Scrapy 是一个用 Python 编写的应用程序框架,用于抓取 网站 数据并提取结构化数据。
Scrapy 常用于数据挖掘、信息处理或存储历史数据等一系列程序中。
通常我们可以通过Scrapy框架轻松实现爬虫,抓取指定的网站内容或图片。
Scrapy架构图(绿线为数据流)
Scrapy的运行过程
代码写好了,程序开始运行了……
注意!只有当调度器中没有请求时,整个程序才会停止,(即对于下载失败的URL,Scrapy也会重新下载。)
制作一个Scrapy爬虫一共需要4个步骤:新建一个项目(scrapy startproject xxx):新建一个爬虫项目清除目标(写items.py):清除你要抓取的目标创建一个爬虫(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类型的类属性(可以理解为类似ORM的映射关系)来定义一个Item。
接下来,创建一个 ItcastItem 类,并构建项目模型。
三、制作蜘蛛(spiders/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 = []是搜索的域名范围,即爬虫的禁区。规定爬虫只爬取该域名下的网页,不存在的URL会被忽略。
start_urls = () : 元组/抓取的 URL 列表。爬虫从这里开始抓取数据,所以数据的第一次下载将从这些 url 开始。其他子 URL 将继承自这些起始 URL。
parse(self, response) : 解析方法,每个初始 URL 下载后都会调用。调用时,每个 URL 返回的 Response 对象作为唯一参数传递。主要功能如下:
p>
负责解析返回的网页数据(response.body),提取结构化数据(生成item)