文本替换{}在scrapinghub中不起作用

时间:2017-10-23 11:58:56

标签: python scrapy scrapinghub

我创建了一个{}格式的网址来动态更改网址。 它在我的电脑上工作得很好。 但是一旦我从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

1 个答案:

答案 0 :(得分:0)

这不是一个刮痧问题。它必须是您的代码。如果我在下面

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

这最终将成为

state=%7B%7D

我会添加

assert type(self.state) is str

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