我创建了一个{}格式的网址来动态更改网址。 它在我的电脑上工作得很好。 但是一旦我从scrapinghub上传并运行它,许多替换中的一个(状态)(其他工作正常)不起作用,它返回%7B%7D&在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日志中看到的网址:
***/vehicles/?year=2010&make=LOTUS&model=EXIGE%20S&state=%7B%7D&mileage=100000&zip=35204
答案 0 :(得分:0)
这不是一个刮痧问题。它必须是您的代码。如果我在下面
>>> "state={}".format({})
'state={}'
这最终将成为
state=%7B%7D
我会添加
assert type(self.state) is str
到我的代码以确保不会发生这种情况,如果确实如此,那么你会得到AssertionError