Scrapy Spiders 翻译2

本文介绍了Scrapy爬虫的基本概念,包括爬虫的工作流程、核心组件Spider的定义及使用方法。Spider负责定义如何抓取网站内容,如何从网页中提取所需数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spiders

spiders是一些用来定义某个或某几个网站如何被抓取的类,包括如何执行爬取,如何从页面提取结构化的数据。换句话说,spiders是用来自定义爬取和解析行为的。

一个爬虫的过程基本过程为:

1. 从开始给定的URLs(可在start_urls中定义),默认使用start_requests()方法 发出最初的请求开始爬取,指定callback函数parse,用来处理对请求的响应;

2. 在callback函数中,parse响应response结果,返回一个整体的字典结构,其中包括要提取的数据,item对象,request对象,和这些对象的迭代。对于获取的request对象,会再次被请求和parse;

3. 在callback函数中,通常使用selectors来parse页面内容,来生成需要的items;

4. 最后,返回所有的items,并输出或储存在数据库中。

这个过程基本适合所有的爬虫,但对于Scrapy爬虫来说,因为不同的目的,绑定了几种不同类型的默认spiders。

scrapy.Spider

class scrapy.spiders.Spider

这是最简单的spider,其它的spiders都继承于该spider。他不提供任何特殊的功能性,仅实现了默认的start_requests(),即发送start_urls请求并调用parse来处理结果。

name

字符串。用于定义spider名字。该名字被scrapy调用,必须唯一。请注意。

如果spider爬取一个独立的域,通常会用域名来命令。如爬取mywebsite.com时,命名为mywebsite;

Note:Python2中,name仅支持ASCII码。

allow_domains

字符串列表,可选。如果offsiteMiddleware被enabled,不属于该域的URLs请求不会被执行。

如果目标URL是https://www.example.com/1.html,可添加'example.com'到列表中。

start_urls

URLs的列表,spider从这些URLs开始爬取。若后续有其他的URL需要访问,会通过这些URLs来生成。

custom_settings

字典。运行spider的时候,相关配置会被修改。他作为类的属性被定义,会在实例化之前更新。

crawler

该属性可通过from_crawler()类方法初始化来设置,会链接spider的crawler对象。

crawlers将很多组间封装为一个入口(如extensions,middlewares,signals managers等)。详细可参考Crawler API。


settings

运行spider的相关设置,是一个settings实例。


logger

log生成性,可用来添加日志。


from_crawler(crawler, *args,**kwargs)

Scrapy创建spiders的类方法。通常你不需要直接修改他,会通过_init_()方法默认实现,用给定的参数调用即可。此外,在新的实例中,这种方式可以设置crawler和settings的属性,在之后的spiders代码中可以进行访问。

参数说明:crawler :crawler实例----与spider绑定的crawler

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

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


start_requests()

这种方式可用来根据给定的URLs返回页面的迭代器。在spider已打开进行爬取时,被Scrapy调用。仅会被调用一次。

class MySpider(scrapy.Spider):
    name = 'myspider'

    def start_requests(self):
        return [scrapy.FormRequest("http://www.example.com/login",
                                   formdata={'user': 'john', 'pass': 'secret'},
                                   callback=self.logged_in)]

    def logged_in(self, response):
        # here you would extract links to follow and return Requests for
        # each of them, with another callback
        pass
parse(response)

log(message[,level,component])

closed(reason)

当spider关闭时被调用。


不是很熟悉代码,这部分翻译还是存在一点问题。还是要变熟悉代码边看。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值