Scrapy Spiders

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

你可能感兴趣的:(scrapy框架,python)