请选择 进入手机版 | 继续访问电脑版

笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

蜘蛛

发布者: 笨鸟自学网

spider是定义一个特定站点(或一组站点)如何被抓取的类,包括如何执行抓取(即跟踪链接)以及如何从页面中提取结构化数据(即抓取项)。换言之,spider是为特定站点(或者在某些情况下,一组站点)定义爬行和解析页面的自定义行为的地方。

对于蜘蛛来说,抓取周期是这样的:

  1. 首先生成对第一个URL进行爬网的初始请求,然后指定一个回调函数,该函数使用从这些请求下载的响应进行调用。

    要执行的第一个请求是通过调用 start_requests() 方法,该方法(默认情况下)生成 Request 中指定的URL的 start_urls 以及 parse 方法作为请求的回调函数。

  2. 在回调函数中,解析响应(网页)并返回 item objects , Request 对象,或这些对象的可迭代。这些请求还将包含一个回调(可能相同),然后由Scrapy下载,然后由指定的回调处理它们的响应。

  3. 在回调函数中,解析页面内容,通常使用 选择器 (但您也可以使用beautifulsoup、lxml或任何您喜欢的机制)并使用解析的数据生成项。

  4. 最后,从spider返回的项目通常被持久化到数据库(在某些 Item Pipeline )或者使用 Feed 导出 .

尽管这个循环(或多或少)适用于任何类型的蜘蛛,但是为了不同的目的,有不同类型的默认蜘蛛被捆绑成 Scrapy 。我们将在这里讨论这些类型。

scrapy.Spider

classscrapy.spiders.Spider
classscrapy.Spider

这是最简单的蜘蛛,也是每个蜘蛛都必须继承的蜘蛛(包括与碎屑捆绑在一起的蜘蛛,还有你自己写的蜘蛛)。它不提供任何特殊功能。它只是提供了一个默认值 start_requests() 从发送请求的实现 start_urls spider属性并调用spider的方法 parse 对于每个结果响应。

name

定义此蜘蛛名称的字符串。spider名称是scrappy定位(和实例化)spider的方式,因此它必须是唯一的。但是,没有什么可以阻止您实例化同一个蜘蛛的多个实例。这是最重要的蜘蛛属性,也是必需的。

如果蜘蛛 爬取 一个域,通常的做法是在域后命名蜘蛛,无论有没有 TLD . 例如,一只爬行的蜘蛛 mywebsite.com 经常被称为 mywebsite .

allowed_domains

包含允许此蜘蛛爬行的域的字符串的可选列表。对于不属于此列表(或其子域)中指定的域名的URL请求,如果 OffsiteMiddleware 启用。

假设您的目标URL是 https://www.example.com/1.html 然后添加 'example.com' 列在名单上。

start_urls

未指定特定URL时,爬行器将从其开始爬行的URL列表。因此,下载的第一个页面将是此处列出的页面。后续的 Request 将从起始URL中包含的数据连续生成。

custom_settings

运行此spider时,将从项目范围配置中重写的设置字典。它必须被定义为类属性,因为在实例化之前更新了设置。

有关可用内置设置的列表,请参阅: 内置设置参考 .

crawler

此属性由 from_crawler() 初始化类后的类方法,并链接到 Crawler 此蜘蛛实例绑定到的对象。

Crawler封装了项目中的许多组件,用于它们的单入口访问(例如扩展、中间件、信号管理器等)。见 爬虫API 了解更多。

settings

用于运行此蜘蛛的配置。这是一个 Settings 实例,请参见 设置 有关此主题的详细介绍。

logger

用蜘蛛创建的python记录器 name . 您可以使用它通过它发送日志消息,如中所述 从蜘蛛记录 .

state

一种字典,可以用来在批之间保存一些爬行器状态。看见 保持批之间的持久状态 去了解更多关于它的信息。

from_crawler(crawler*args**kwargs)

这是Scrapy用来创建蜘蛛的类方法。

您可能不需要直接重写它,因为默认实现充当 __init__() 方法,使用给定参数调用它 args 和命名参数 kwargs .

尽管如此,此方法设置了 crawler 和 settings 新实例中的属性,以便稍后在蜘蛛代码中访问它们。

参数
  • crawler (Crawler instance) -- 蜘蛛将被绑到的爬行器

  • args (list) -- 传递给的参数 __init__() 方法

  • kwargs (dict) -- 传递给的关键字参数 __init__() 方法


上一篇:命令行工具下一篇:选择器

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-7-22 09:36 , Processed in 0.018470 second(s), 17 queries .

© 2001-2020

返回顶部