Scrapy的yield
时间: 2024-10-23 10:17:36 浏览: 5
在Scrapy框架中,`yield`关键字起着关键的作用。它有以下几个核心用途:
1. **数据产出**[^1]:
```python
class MySpider(scrapy.Spider):
...
def parse(self, response):
# 提取数据并生成Item
item = {'title': ..., 'body': ...}
yield item # 通过yield生成一个Item对象,引擎会保存并后续处理
```
当`parse`函数遇到`yield item`时,它表示从当前爬虫页中解析出了一个Item,这个Item会被添加到队列中等待进一步处理。
2. **请求调度**:
```python
for link in response.css('a::attr(href)').getall():
yield scrapy.Request(link, self.parse) # 通过yield生成新的Request,引擎会发起HTTP请求并调用parse方法处理新响应
```
在这里,每次循环迭代都会生成一个新的Request,指示Scrapy去访问链接指定的URL,当新页面响应返回后,`self.parse(response)`会被再次调用。
总结来说,`yield`在Scrapy中负责控制爬虫的工作流程,使得spider能够逐个地处理数据和触发新的网络请求,保持了异步非阻塞的特性。
阅读全文