简单自实现scrapy爬虫的框架yield 数据处理

本文介绍了一个使用Python装饰器实现的功能,能够捕获yield数据并根据不同数据类型进行处理,如打印字典信息或发送请求并显示响应结果。

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

功能描述:捕获yield数据, 如果是字典对象或数据类型, 打印该信息;如果是请求对象,则发送该请求并打印响应结果
实现关键: 装饰器

coding=utf-8

import requests
import urllib.request
import urllib

name_list = [‘zhangsan’, ‘lisi’, ‘wangwu’, ‘zhaoliu’]
age_list = [23, 38, 17, 11]

def show(info):
print(‘打印信息:’, info)

def send_request(req):
response = urllib.request.urlopen(req)
print(response.read())

def catch_yield(func):
def inner():
data = func()
data = (i for i in data) # 等效于data = list(data), 注意:这里需要保存结果
for _ in list(data):
print()
if isinstance(
, dict):
print(‘你好这是字典类型’, )
show(
)
else:
print(‘类型:’)
print(type())
send_request(
)
return inner

@catch_yield
def func1():
for index, (name, age) in enumerate(zip(name_list, age_list)):
person = {}
person[‘name’], person[‘age’] = name, age
# print(‘第%d个个人信息开始yield’ % index)
if index % 2: # 奇数
yield person
else:
yield urllib.request.Request(url=‘http://www.baidu.com’)
if name == ‘main’:
func1()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值