我在用刮痧(ver:1.1.1)我不知道如何关联不同函数中的变量,有人能帮我吗
import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import codecs
import scrapy
class LinkSpider(scrapy.Spider):
name = 'go'
allowed_domains = ['example_0.com']
def start_requests(self):
with codecs.open('go.txt', 'r', 'utf-8') as f:
start_urls = [url.strip() for url in f.readlines()]
for start_url in start_urls:
yield scrapy.Request(start_url, callback=self.parse_handle302, meta={'dont_redirect': True, 'handle_httpstatus_list': [302]})
def parse_handle302(self, response):
product = {}
r = re.compile(r'\d+')
i = response.request.url
tid = r.findall(i)
yield scrapy.Request(i, callback=self.parse_handle301, dont_filter=True)
def parse_handle301(self, response):
link = response.request.url
print '\n'
product['tid'] = tid
product['link'] = link
print product
当我跑的时候,它告诉我:
NameError: global name 'tid' is not defined
那么,如何通过重定向302和301将“tid”和“link”关联起来,在“start\u url”中的“start\u url”之后,每个“tid”映射自己的“link”
也许this(passing additional data to callback functions)就是你想要的
相关问题 更多 >
编程相关推荐