Я создаю паука с помощью Scrapy - и, очевидно, мне не хватает моих навыков в Python.
Я хотел бы создать JSON полностью без списков, но, так как страница, которую я копирую, имеет несколько«типы комнат» для одного «названия комнаты» - я получаю списки.
Теперь этот код ...:
def parse(self, response):
for romtyper in response.selector.xpath(".//div[@class='room__collapsable']"):
fradato = romtyper.xpath("//input[@type='hidden' and @name='fromDate']/@value").extract_first()
personer = romtyper.xpath("//*[@id='booking-widget-guest-count-hotelnav-widget']/span/ng-pluralize/text()").extract_first()
romnavn = romtyper.xpath(".//h2[@class='room__heading-level1']/text()[1]").extract_first()
for prisboks in response.selector.xpath(".//div[@class='room__rates l-price-box l-price-box--selectable']"):
romtype = prisboks.xpath(".//h3[@class='room-price-info__rate']/text()").extract_first()
rompris = prisboks.xpath(".//span[@class='price']/text()").extract_first()
yield {"fradato": fradato, "personer": personer, "romnavn": romnavn, "romtype": romtype, "rompris": rompris}
... предоставляет мне только один из типов номеров (и цены).И если я перейду к extract () вместо extract_first () в строке -1 и -2 (снизу), я получу списки снова.
Вот результат, который я ищу:
[
{"fradato": "2018-12-03", "personer": "1 Voksen", "romnavn": "A room name", "romtype": "Room type A", "rompris": "1088 "},
{"fradato": "2018-12-03", "personer": "1 Voksen", "romnavn": "A room name", "romtype": "Room type B", "rompris": "1288 "}]
Спасибо за помощь новичку с основами ...