我创建了一个{}格式的url来动态更改url。它在我的电脑上运行得很好。但是一旦我从scrapinghub上传并运行它,许多替换中的一个(状态)不起作用(其他的都很好),它返回%7B%7D&在url中,它是用大括号编码的。这一切为什么要发生?引用State变量时会遗漏什么?
这是我代码中的url:
def __init__(self):
self.state = 'AL'
self.zip = '35204'
self.tax_rate = 0
self.years = [2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017]
def parse_m(self, response):
r = json.loads(response.text)
models = r['models']
year = response.meta['year']
make = response.meta['make']
for model in models:
for milage in [40000,50000,60000,70000,80000,90000,100000]:
url = '****/vehicles/?year={}&make={}&model={}&state={}&mileage={}&zip={}'.format(year,make, model, self.state, milage, self.zip)这是我在scrapinghub的日志中看到的url:
***/vehicles/?year=2010&make=LOTUS&model=EXIGE%20S&state=%7B%7D&mileage=100000&zip=35204发布于 2017-10-24 05:09:31
这不是scrapinghub的问题。它只能是你的代码。如果我在下面这样做
>>> "state={}".format({})
'state={}'这最终会是
state=%7B%7D我想补充一句
assert type(self.state) is str添加到我的代码中,以确保这种情况不会发生,如果发生了这种情况,您将获得一个AssertionError
https://stackoverflow.com/questions/46888809
复制相似问题