2017-10-23 3 views
0

{} 형식의 URL을 만들어서 즉시 URL을 변경합니다. 내 PC에서 정상적으로 작동합니다. 하지만 일단 내가 업로드하고 많은 대체 (다른 잘 작동) 중 하나 (주)에서 작동하지 않습니다 그것을 실행, 작동하지 않습니다, 7 중 % 7D & 인코딩 된 중괄호가있는 URL에 반환합니다. 왜 이런 일이 발생합니까? State 변수를 참조 할 때 무엇을 놓치겠습니까? scrapinghub에서 텍스트 대체 {}이 (가) 작동하지 않습니다.

내 코드에서 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 
+0

코드를 올바르게 들여 씁니다. 또한 for-loops가 어떤 클래스 메소드에도없는 경우 self.state는 아무 것도 반환하지 않으며 원하는 방식으로 문자열을 형식화하지 않습니다. –

+0

들여 쓰기가 고정되어 있습니다. 당신이 수업 방법에 의해 의미하는지 확실하지 않습니다. 그러나 self.zip 변수는 완벽하게 정상적으로 작동합니다. 내가 본 것까지 그들은 같은 형식과 사용법을 가지고 있지만. –

+0

정말 이상하게 보입니다 ... 신속하고 더러운 수정은 url의 끝에있는 .replace ('{}', '')로 대체하는 것입니다. 로컬로 실행 해 보셨습니까? 코드를 스크래핑 허브에 업로드하는 방법은 무엇입니까? –

답변

0

이것은 scrapinghub 문제가 아닙니다. 그것은 당신의 코드 만이되어야합니다. 내가

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

아래한다면 이것은 내가 발생하지 않는이 상황을 보장하기 위해 내 코드에

assert type(self.state) is str 

를 추가

state=%7B%7D 

을 끝나게 것 그리고 다음 않는 경우 get AssertionError

관련 문제