Scrapy x path: переберите два разных блока и объедините результаты - PullRequest
0 голосов
/ 10 июля 2019

Я очищаю этот сайт: https://www.mrlodge.de/wohnungen/ Поэтому я написал сканер, который отлично работает и извлекает всю информацию из каждого предложения. Каждое предложение также имеет подробную информацию. Это подробная информация, которую я могу получить с помощью URL, возвращенного этим выражением xpath:

x = listings.xpath('//form/input[@name="name_url"]/@value').getall()

Проблема, с которой я сталкиваюсь, заключается в том, что она находится внутри блока предложений, но не внутри тегов div, которые я уже зацикливаю. Я пробовал следующее, но я получил только первый элемент для detail_url. Должен быть способ включить его в цикл for, но я просто не понимаю, как.

Пожалуйста, помогите

def parse(self, response):
    json_response = json.loads(response.body)
    listings = Selector(text=json_response.get('list'))
    x = listings.xpath('//form/input[@name="name_url"]/@value').get()

    for listing in listings.xpath("//div[@class='mrlobject-list__item__content']"):
        yield {
            'title': listing.xpath('.//div[@class="obj-smallinfo"]/text()').get(),
            'rent': listing.xpath(".//span[@class='obj-rent']/text()").get(),
            'room': listing.xpath(".//span[@class='obj-room']/text()").get(),
            'area': listing.xpath(".//span[@class='obj-area']/text()").get(),
            'info': listing.xpath(".//div[@class='object-title']/text()").get(),
            'detail_url': x
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...