Я выполняю паук ниже для академических c целей на данных о живом трафике tomtom c. Данные извлекаются из базового JSON, например: https://api.midway.tomtom.com/ranking/live/ITA_milan
Я хочу просканировать несколько городов и создать словарь, например:
{'Amsterdam': {'var1': value1, 'var2': value2}, 'Brussels': {'var1', value1 (...)}}
Это мой паук пока что дает мне
TypeError: можно только объединить str (не "set") в str
Что я могу сделать, чтобы получить желаемую структуру в словаре? Я продолжаю возвращаться к тем основным вопросам, к сожалению. Я все еще учу python с нуля. Ура Марчелло
# -*- coding: utf-8 -*-
import scrapy
import json
import requests
import datetime
from scrapy.spiders import Spider
data = {}
class TomSpiderSpider(scrapy.Spider):
name = 'tom_spider'
allowed_domains = ['tomtom.com']
start_urls = ['https://api.midway.tomtom.com/ranking/live/']
def start_requests(self):
data['city'] = {'FRA_paris', 'london-traffic', 'berlin-traffic', 'amsterdam-traffic', 'brussels-traffic',
'frankfurt-am-main-traffic'}
url = 'https://api.midway.tomtom.com/ranking/live/' + data['city']
yield scrapy.Request(url=url, callback=self.parse, meta = {'item': data})
def parse(self, response):
jsonresponse = json.loads(response.body_as_unicode())
data = response.meta['item']
data["content"] = jsonresponse["data"]
yield data