Scrapy - Неверный URL запроса - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь отправить запрос с использованием scrapy, используя этот код:

import scrapy
import json

class communes_spider(scrapy.Spider):
    name = "test"
    allowed_domains = ["www.drivy.com"]

    custom_settings = {
        'DOWNLOAD_DELAY' : 1,
    }

    start_urls = ['https://www.drivy.com/search.json?latitude={}&longitude={}&start_date=2019-05-06&start_time=09:00&end_date=2019-05-06&end_time=18:00']

    with open('C:/Users/coppe/drivy/communes.json') as json_file:  
        locations = json.load(json_file)[0:2]

    def start_request(self):
        for start_url in self.start_urls:
            for city in self.locations:
                url = start_url.format(city['lat'],city['long'])
                yield scrapy.Request(
                    url=url, 
                    callback=self.parse,
                )

    def parse(self,response):
        yield {'url':response.url}

Вкратце, я хочу отформатировать URL-адрес в start_urls с данными, содержащимися в файле JSON.В URL-адресе я хочу заполнить это: latitude={}&longitude={}, заменив фигурные скобки на некоторые числа.Эти числа находятся в следующем файле JSON в ключах 'lat' и 'long':

[
{"city": "Anvers  ", "region": "R\u00e9gion flamande", "lat": "51.217", "long": "4.4"},
{"city": "Zoersel", "region": "R\u00e9gion flamande", "lat": "51.267", "long": "4.717"},
]

Однако, когда я запускаю приведенный выше код, запрос отформатирован неправильно, он дает мне следующее: 'https://www.drivy.com/search.json?latitude=%7B%7D&longitude=%7B%7D&start_date=2019-05-06&start_time=09:00&end_date=2019-05-06&end_time=18:00'но это должно привести к этому 'https://www.drivy.com/search.json?latitude=51.217&longitude=4.717&start_date=2019-05-06&start_time=09:00&end_date=2019-05-06&end_time=18:00'

Кто-нибудь, чтобы понять, что здесь происходит?

...