Spider简介
Scrapy中的Spider是用于定义和执行数据抓取逻辑的核心组件。Spider负责从指定的网站抓取数据,并定义了如何跟踪链接、解析内容以及提取数据的规则。它允许您定制化地指定要抓取的网站、页面和所需的信息。Spider的作用是按照预定的规则爬取网页,从中提取所需的数据,并将数据传递给Scrapy引擎进行处理。
以下是一个简单的Scrapy Spider示例代码:
import scrapy
class MySpider(scrapy.Spider):
name = 'example_spider'
start_urls = ['http://example.com']
def parse(self, response):
# 在这里编写处理响应的逻辑
# 可以使用XPath或CSS选择器提取数据
title = response.css('title::text').get()
body = response.css('body::text').get()
# 可以将提取到的数据通过yield传递给Pipeline进行处理
yield {
'title': title,
'body': body
}
在这个示例中:
MySpider
是一个继承自scrapy.Spider
的Spider类。name
属性定义了Spider的名称。start_urls
属性包含了Spider开始抓取的初始URL列表。parse
方法是用于处理网页响应的默认方法。在这里,使用了CSS选择器从网页中提取了标题和正文内容,并通过yield
语句将提取到的数据作为字典传递给Pipeline进行处理。
Spider传参方式
在Scrapy中,Spider之间或Spider内部的不同方法之间可以通过多种方式进行参数传递和通信:
-
构造函数参数传递:
- 在Spider的构造函数中定义自定义参数,并在初始化Spider时传递这些参数。这些参数可以在Spider的各个方法中使用。
import scrapy class MySpider(scrapy.Spider): name = 'example' def __init__(self, category=Non