簡單自實現scrapy爬蟲的框架yield 數據處理

功能描述:捕獲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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章