Как должен выглядеть xpath, чтобы получить это значение - PullRequest
1 голос
/ 21 июня 2020

Как xpath должен возвращать значение Rua Jorge de Lima, Boa Viagem?

xpath('//div[@class="simple-card__actions"]/p[@class="color-dark text-regular simple-card__address"]')

Я пытался получить это значение внутри HTML элемент с указанным выше xpath, но он возвращает пустой массив при запуске из файла .py. Когда я пытаюсь с терминала, он возвращает:

In [4]: response.xpath('//div[@class="simple-card__actions"]/p[@class="color-dark text-regular simple-card__address"]').extract()
Out[4]: '<p ellipsis="true" ellipsis-lines="1" class="color-dark text-regular simple-card__address">Rua Jorge de Lima, Boa Viagem</p>'

HTML:

<div class="simple-card__actions">
    <p class="color-dark text-regular simple-card__address" ellipsis="true" ellipsis-lines="1">Rua Jorge de Lima, Boa Viagem</p>
    <ul class="feature__container simple-card__amenities">
        <li class="feature__item text-small js-areas">
            <span class="icon icon-color--current icon-size--regular">
                <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
                    <g fill-rule="nonzero" fill="none">
                        <path d="M0 0h24v24H0z"></path>
                        <path d="M2 2h20v20H2z"></path>
                        <path d="M5 18V6a1 1 0 00-2 0v13a2 2 0 002 2h13a1 1 0 000-2H6a1 1 0 01-1-1zM19.25 3c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0119.25 17H8.75A1.75 1.75 0 017 15.25V4.75C7 3.784 7.784 3 8.75 3zM18 5h-8a1 1 0 00-1 1v8a1 1 0 001 1h8a1 1 0 001-1V6a1 1 0 00-1-1z" fill="currentColor"></path>
                    </g>
                </svg>
            </span>
            <span>63 m²<!----></span>
        </li>
            <li class="feature__item text-small js-bedrooms">
                <span class="icon icon-color--current icon-size--regular">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path fill="currentColor" d="M21 14H3v-1c0-.801.312-1.555.879-2.121A2.978 2.978 0 016 10h12c.801 0 1.555.312 2.121.879.567.566.879 1.32.879 2.121v1zm0 3H3v-1h18v1zM5 8V6c0-.551.449-1 1-1h4c.551 0 1 .449 1 1v2H5zm8-2c0-.551.449-1 1-1h4c.551 0 1 .449 1 1v2h-6V6zm8 3V6a3 3 0 00-3-3h-4c-.768 0-1.47.29-2 .764A2.993 2.993 0 0010 3H6a3 3 0 00-3 3v3a4.992 4.992 0 00-2 4v6a2 2 0 002 2h1v-2h16v2h1a2 2 0 002-2v-6a4.992 4.992 0 00-2-4z"></path>
                    </svg>
                </span>
                <span>2<!----></span>
            </li>
            <li class="feature__item text-small js-parking-spaces">
                <span class="icon icon-color--current icon-size--regular">
                    <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
                        <g fill-rule="nonzero" fill="none">
                            <path d="M0 0h24v24H0z"></path>
                            <path d="M2 2h20v20H2z"></path>
                            <path d="M15.843 2a3 3 0 012.935 2.38l.778 3.671A3 3 0 0122 11v9a2 2 0 01-2 2h-1a1 1 0 01-1-1v-2H6v2a1 1 0 01-1 1H4a2 2 0 01-2-2v-9a3 3 0 012.444-2.949l.778-3.672A3 3 0 018.157 2zM19 10H5a1 1 0 00-1 1v6h16v-6a1 1 0 00-1-1zm-2.5 2a1.5 1.5 0 110 3 1.5 1.5 0 010-3zm-9 0a1.5 1.5 0 110 3 1.5 1.5 0 010-3zm8.343-8H8.157l-.117.007a1 1 0 00-.862.786L6.5 8h11l-.678-3.207-.031-.113a1 1 0 00-.948-.68z" fill="currentColor"></path>
                        </g>
                    </svg>
                </span>
                <span>1<!----></span>
            </li>
            <li class="feature__item text-small js-bathrooms">
                <span class="icon icon-color--current icon-size--regular">
                    <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
                        <g fill-rule="nonzero" fill="none">
                            <path d="M0 0h24v24H0z"></path>                 
                            <path d="M2 2h20v20H2z"></path>                         
                            <path d="M10.912 16h.125a.963.963 0 00.963-.963V13h-2v2.088c0 .504.408.912.912.912zm4 3h.125a.963.963 0 00.963-.963V13h-2v5.088c0 .504.408.912.912.912zm4-3h.125a.963.963 0 00.963-.963V13h-2v2.088c0 .504.408.912.912.912zM21 11H9V9a2 2 0 012-2h3V4H5v17a1 1 0 11-2 0V4a2 2 0 012-2h9a2 2 0 012 2v3h3a2 2 0 012 2v2z" fill="currentColor"></path>                         
                        </g>
                    </svg>
                </span>
                <span>2<!----></span>
            </li>
    </ul>
    <div class="simple-card__cta">
        <button type="button" class="link link-cta link--bold js-see-phone"><!----> Ligar</button>
        <button type="button" class="link link-cta link--bold js-send-message"><!----> Mensagem</button>
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Сначала выведите в коде response.status (должно быть 200). Затем вы можете попробовать следующее выражение XPath:

address = response.xpath('//p[contains(@class,"address")]/text()').get()
print(address)

Найдите элемент p с атрибутом class, который содержит определенное c слово («адрес»).

0 голосов
/ 21 июня 2020

Этот XPath:

'//div[@class="simple-card__actions"]/p/text()'
...