python当中的yield函数具体如何使用

本文探讨了在Python Scrapy框架中yield函数的作用。yield将函数转化为生成器,用于在Spider的parse方法中处理Request。在循环中,yield item返回数据,yield scrapy.Request()则触发对新URL的请求。若移除yield,Spider只会处理start_url,无法继续爬取。Scrapy要求Request返回可迭代对象,理解yield的深层工作原理还需深入研究源码。

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

  问题起源于初次接触scrapy时,好奇于spider子类当中的parse方法,在parse()当中为了Request next_url,而要使用yield函数。

  于是乎撸了一段代码试验一下yield:

import scrapy
from items import Work1Item

class Work1Spider(scrapy.Spider):
        name = 'work1'
        start_urls = [
            'http://quotes.toscrape.com/',
        ]
	
	def parse(self, response):
	        for quote in response.xpath('//div[@class="quote"]'):
			item = Work1Item() #自定义的item
		    item['author'] = quote.xpath('.//small[@class="author"]/text()').extract_first()
			item['tags'] = quote.xpath('.//div[@class="tags"]/a[@class="tag"]/text()').extract()
			item['quote'] = quote.xpath('./span[@class="text"]/text()').extract_first()
	        yield item
		next_page_url = response.xpath('//li[@class="next"]/a/@href').extract_first()
		if next_page_url is not None:
		        yield scrapy.Request(response.urljoin(next_page_url))
  对item对象使用了yield,结果在scrapy输出信息中得到了如下:

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值