Scrapy Spiders

Scrapy Spiders,第1张

Scrapy Spider

目录
  • Scrapy Spider
  • 前言
  • 一、如何运作
  • 二、scrapy.Spider
    • 属性
    • 方法
  • 三、创建Spider
  • 总结


前言

在scrapy中,spiders是定义如何抓取站点的类,里面包含了抓取的域名,已经如何抓取解析。

是我们爬取数据时主要 *** 作的文件。


一、如何运作

首先我们要知道他是如何运作的。

  1. 默认情况下,首先调用start_requests()获取初始的URL,,并将返回的数据通过回调函数parse()处理。

    我们可以重写star_requests,用我们自定义的方法进行处理。

  2. 回调函数通过选择器解析网页,解析结果可以分为两类,一类是数据部分,另一类就是需要继续爬取的url。

    所以可以返回item对象(进行后期处理储存),或者request对象(再次提交请求,指定其他回调函数处理)

  3. 循环(2)直到完成所有请求,或者解析完所有数据
二、scrapy.Spider

所有spider的基类,所有其他spider都必须继承它(包括自己编写的蜘蛛)。

属性
name:定义爬虫的名称,必须的。

通常以网站名称命名。

例如baidu.com,我么可以定义为baidu allowed_domains:允许爬取的域名,是一个列表。

例如:['baidu.com'] start_urls:爬取的起始页面 custom_settings:一个字典。

运行这个爬虫时,需要覆盖项目设置中的全局设置,也就是这个爬虫会使用这里写的设置,不会使用settings中默认的。

此设置要在初始化前更新,所以必须定义成类变量。

方法
start_requests():该方法只会调用一次。

从start_urls中获取url,并返回迭代器,生成请求。

如果需要对其实url处理,例如需要post请求,可以进行重写 parse():默认start_requests()的回调函数。

我们需要重写里面的内容以完成我们的需求

三、创建Spider

下面我们创建一个爬虫文件
在命令行中:scrapy genspider baidu baidu.com

下面是生成的文件:

import scrapy


class BaiduSpider(scrapy.Spider):
    name = 'baidu'
    allowed_domains = ['baidu.com']
    start_urls = ['http://baidu.com/']

    def parse(self, response):
    	"""
    	编写爬取逻辑
    	"""
        pass

我们可以发现这个爬虫类就是继承自scrapy.Spider。


总结

本节介绍了spider的一些基础知识,我们要熟练掌握,毕竟日后我们写项目时,我们创建新的spider文件,都是基于Spider这个基类的,爬取逻辑啥的都要写在这里面

官方文档:Spider

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/662391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存