0

我创建了一个 {} 格式的 url 来动态更改 url。它在我的 PC 上运行良好。但是一旦我从scrapinghub上传并运行它,许多替换(其他工作正常)中的一个(状态)不起作用,它会在编码花括号的url中返回 %7B%7D& 。为什么会这样?引用状态变量时我错过了什么?

这是我的代码中的网址:

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
4

1 回答 1

0

这不是 scrapinghub 的问题。它只能是您的代码。如果我在下面做

>>> "state={}".format({})
'state={}'

这最终会成为

state=%7B%7D

我会补充

assert type(self.state) is str

到我的代码以确保这种情况不会发生,如果发生了,那么你会得到一个AssertionError

于 2017-10-23T21:09:31.270 回答