【 ⑬】Scrapy库概述(简介、安装与基本使用)

简介: 【 ⑬】Scrapy库概述(简介、安装与基本使用)

1 Scrapy简介

Scrapy是一个用于快速、高效地抓取和提取数据的Python开发框架。它基于异步网络库Twisted,并提供了强大的自定义功能,使得开发者能够灵活地编写网络爬虫和数据抓取程序。

以下是Scrapy框架的主要特点:

  • 基于异步的架构:Scrapy使用了异步的方式处理网络请求和响应,能够高效地处理大量的并发任务。
  • 强大的爬取能力:Scrapy支持多线程和分布式爬取,可以同时处理多个请求,加快数据采集速度。
  • 灵活的数据提取:Scrapy提供了XPath和CSS选择器等多种方法来方便地提取网页中的数据,使得数据抽取变得简单高效。
  • 自动的请求管理:Scrapy自动处理请求的发送和跟踪,包括请求的排队、重试、优先级设置等,减少了开发者的工作量。
  • 丰富的中间件支持:Scrapy允许开发者通过中间件对请求和响应进行处理,添加自定义的功能或逻辑,例如代理、用户登录等。
  • 内置的各种组件:Scrapy提供了许多内置的组件,如自动限速、去重过滤器、HTTP缓存等,方便开发者进行快速开发和部署。

总而言之,Scrapy是一个功能强大的网络爬虫框架,使得开发者能够高效地抓取、提取和处理互联网上的数据。它广泛应用于舆情分析、数据挖掘、价格监测、搜索引擎等领域。


2 Scrapy安装与配置

首先,确保您的Python环境已经安装和配置好。Scrapy要求使用Python 3.6或更高版本。

  • 打开命令行终端(Windows用户可以使用命令提示符或PowerShell,Mac和Linux用户可以使用终端)
  • 在终端中运行以下命令来安装Scrapy:
pip install scrapy

如果遇到权限问题,请尝试在命令前面加上sudo以获取管理员权限。

  • 安装完成后,可以使用以下命令验证Scrapy是否成功安装:
scrapy version

如果成功安装,将显示Scrapy的版本信息。

2.1 安装失败情况分析

  • 报错1: building ‘twisted.test.raiser’ extension
    error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++
    Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools
  • 解决方法http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
    到这个网站找到Twisted‑20.3.0‑cp37‑cp37m‑win_amd64.whl
    cp是你的python版本,amd是你的操作系统的版本
    下载完成之后 使用pip install twisted的路径 安装
    切记安装完twisted 再次安装scrapy
  • 报错2:提示python -m pip install --upgrade pip
  • 解决方法:运行python -m pip install --upgrade pip
  • 报错3:win32的错误
  • 解决方法:pip install pypiwin32
  • 其他报错解决方法:使用anaconda

3 Scrapy基本使用

3.1 创建Scrapy项目

打开命令行终端,通过以下命令创建一个新的Scrapy项目:

scrapy startproject project_name

这将在当前目录下创建一个名为"project_name"的Scrapy项目。

注意:项目的名字不允许使用数字开头 也不能包含中文

3.2 创建Spider

要在spiders文件夹中去创建爬虫文件

进入项目目录,并通过以下命令创建一个爬虫(Spider)

cd project_name

scrapy genspider 爬虫文件的名字 要爬取网页

scrapy genspider spider_name example.com

一般情况下不需要添加http协议 因为start_urls的值是根据allowed_domains修改的。所以添加了http的话 那么start_urls就需要我们手动去修改了

这就是刚创建好的baidu.py

3.3 编写爬虫代码

我们需要实现parse()方法来解析和提取页面数据。

3.4 运行爬虫

输入以下命令

scrapy crawl 爬虫的名字


4 爬虫遇到的RobotsTxt

RobotsTxt(机器人协议)是一种用来指导搜索引擎爬虫在访问网站时应该遵守的规则。它通常位于网站根目录下的名为"robots.txt"的文本文件中。RobotsTxt文件使用简单的语法规则来控制哪些页面可以被爬取,哪些页面不可以被爬取。

以下是RobotsTxt的基本用法和语法解释:

  1. User-agent (用户代理)
    –指定要约束的搜索引擎爬虫的名称或标识。
    –可以使用"*"表示适用于所有爬虫。
  2. Disallow (禁止访问)
    –指定不允许爬虫访问的URL路径。
    –使用相对路径或绝对路径指定禁止访问的页面。
    –可以使用多个Disallow规则来指定多个禁止访问的路径。
  3. Allow (允许访问)
    –指定允许爬虫访问的URL路径。
    –通常与Disallow一起使用,当Disallow规则具有更高优先级时,Allow规则可以用来覆盖部分限制。
  4. Sitemap (网站地图)
    –指定网站的XML Sitemap文件的路径。
    –Sitemap文件包含了网站中所有可供爬取的URL地址,并帮助搜索引擎更好地了解网站结构。

例如:

User-agent: *
Disallow: /private/
Disallow: /secret.html
Allow: /public/
Sitemap: https://www.example.com/sitemap.xml

在scrapy中,我们只需要将settings.py中的这一行注释掉或者设为false即可

接下来我们再次运行就可以看到我们在parse中写的内容了,证明该代码执行成功

相关文章
|
5月前
|
数据采集 前端开发 Shell
Scrapy框架简介
Scrapy框架简介
|
数据采集 JSON 前端开发
Python爬虫进阶:使用Scrapy库进行数据提取和处理
在我们的初级教程中,我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中,我们将深入了解Scrapy的强大功能,学习如何使用Scrapy提取和处理数据。
|
7月前
|
NoSQL MongoDB Docker
百度搜索:蓝易云【Scrapy框架之Docker安装MongoDB教程。】
现在,你已经成功在Scrapy框架中使用Docker安装并配置了MongoDB。你可以在Scrapy爬虫中使用MongoDB进行数据存储和处理。
248 0
|
数据采集 存储 中间件
Amazon图片下载器:利用Scrapy库完成图像下载任务
本文介绍了如何使用Python的Scrapy库编写一个简单的爬虫程序,实现从Amazon网站下载商品图片的功能。Scrapy是一个强大的爬虫框架,提供了许多方便的特性,如选择器、管道、中间件、代理等。本文将重点介绍如何使用Scrapy的图片管道和代理中间件,以提高爬虫的效率和稳定性。
Amazon图片下载器:利用Scrapy库完成图像下载任务
|
Shell Linux Python
关于Python安装Scrapy库的常见报错解决
关于Python安装Scrapy库的常见报错解决
682 0
|
数据采集 数据处理 Python
Python爬虫基础:使用Scrapy库初步探索
Scrapy是Python中最流行的网页爬虫框架之一,强大且功能丰富。通过Scrapy,你可以快速创建一个爬虫,高效地抓取和处理网络数据。在这篇文章中,我们将介绍如何使用Scrapy构建一个基础的爬虫。
|
数据采集 中间件 Shell
Python爬虫深度优化:Scrapy库的高级使用和调优
在我们前面的文章中,我们探索了如何使用Scrapy库创建一个基础的爬虫,了解了如何使用选择器和Item提取数据,以及如何使用Pipelines处理数据。在本篇高级教程中,我们将深入探讨如何优化和调整Scrapy爬虫的性能,以及如何
|
Python Windows
Anaconda详细安装及安装Scrapy框架
Anaconda详细安装及安装Scrapy框架
351 0
|
Python Windows
python怎么安装第三方库,python国内镜像源,终于找到最全的安装教程啦;如Requests,Scrapy,NumPy,matplotlib,Pygame,Pyglet,Tkinter
python怎么安装第三方库,python国内镜像源,终于找到最全的安装教程啦;如Requests,Scrapy,NumPy,matplotlib,Pygame,Pyglet,Tkinter
1422 0
|
数据采集 XML 前端开发
Python爬虫:scrapy内置网页解析库parsel-通过css和xpath解析xml、html
Python爬虫:scrapy内置网页解析库parsel-通过css和xpath解析xml、html
217 0