Я пытаюсь отправить запрос с использованием 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'
Кто-нибудь, чтобы понять, что здесь происходит?