返回

Scrapy框架的五大坑,踩雷注意

人工智能

Scrapy框架的5大陷阱,连踩两小时的“无效学习”


在今天之前,谈到爬虫软件,绝大多数的人几乎第一时间都会想到Scrapy框架,为什么呢?因为它非常好用。但是即便是再好用的工具,你不懂使用方法的话,也很容易掉进“无效学习”的陷阱里。本文我就分享一下作为一名Scrapy框架的初学者,在使用中踩过的5个坑,仅供大家参考。

陷阱1:如何创建一个Scrapy项目

对于初学者来说,要学会的第一件事就是创建一个项目。当你准备创建一个Scrapy项目时,你首先想到的是它会在哪个目录下运行,是当前目录还是某个特定的目录呢?如果创建在某个特定的目录下,又该怎么进入?

事实上,正确的方法是进入到命令行,然后运行scrapy startproject <project name>,Scrapy框架会自动在当前目录创建一个项目,然后你再进入到项目目录即可,它就在那里。这样是不是就省去了很多繁琐的步骤?

陷阱2:Middleware的作用是什么

在爬虫软件的学习中,有一个知识点叫中间件,官方的解释是:中间件用于拦截和修改Scrapy请求和响应,在很大程度上扩展了Scrapy的功能。但我发现解释起来容易,但实际上理解和操作起来可不容易,这也是初学者最容易掉进的陷阱之一。

首先,我们要知道,Scrapy框架的中间件主要有两个作用:

  • 允许自定义和修改HTTP请求。
  • 允许拦截和修改HTTP响应。

其次,对于中间件的使用,以下几个信息点是初学者必须掌握的:

  • 中间件配置在settings.py文件的中间件部分。
  • 使用@classmethod装饰器来配置和使用中间件。
  • 中间件中的每个方法都必须以process开头。

陷阱3:Scrapy框架的几个核心概念和组件

Scrapy框架的3个核心概念:

  • 蜘蛛 (Spider): 负责从网页中抓取数据。
  • 引擎 (Engine): 负责管理蜘蛛,调度并执行它们的抓取任务。
  • 项目 (Project): 包含了蜘蛛、引擎和其他组件的集合。

Scrapy框架的主要组件:

  • 请求 (Request): 由引擎发送给蜘蛛的抓取任务。
  • 响应 (Response): 蜘蛛从网页中抓取的数据。
  • 项目 (Item): 存储抓取数据的容器。
  • 管道 (Pipeline): 将项目持久化到数据库或其他存储系统。

陷阱4:如何使用Scrapy框架进行网页抓取

Scrapy框架的抓取过程主要分为以下几个步骤:

  1. 创建一个项目。
  2. 定义蜘蛛。
  3. 配置中间件。
  4. 启动引擎。

陷阱5:如何使用Scrapy框架进行数据持久化

Scrapy框架提供了几种数据持久化方式,最常用的是:

  • 使用管道将项目持久化到数据库。
  • 使用管道将项目存储到文件中。
  • 使用管道将项目发送到消息队列。

不过,不管你选择哪种数据持久化方式,以下几点是需要注意的:

  • 管道配置在settings.py文件的管道部分。
  • 使用@classmethod装饰器来配置和使用管道。
  • 管道中的每个方法都必须以process开头。

附送一个小技巧

当你使用Scrapy框架进行网页抓取时,经常会遇到这样的情况:目标网站对你设置了爬虫访问限制,如果硬要请求,网站会封禁你的IP,甚至可能将你列入黑名单。而如果你的目标网站设置了反爬虫机制,那么你很有可能就会掉入到反爬虫陷阱中。

因此,初学者在使用Scrapy框架进行网页抓取时,一定要注意绕过反爬虫机制。最简单的方法就是使用代理IP,这样可以隐藏你的真实IP,避免被网站封禁。