Попытка извлечь значение через xpath переменной, не получая правильный результат - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь получить это значение через xpath.

enter image description here

<td width="50%" class="col">
<table class="item" cellpadding="0" cellspacing="0">
<tr>
  <th>Area (m²)</th>
  <td class="value">
    <strong>165</strong>
  </td>
</tr>

Я пытаюсь получить фактическое целое значение (165)

это xpath, который я получаю с помощью инструментов отладки

/html/body/div[4]/section/div/div/div[2]/div[1]/div[1]/div[2]/div[3]/table/tbody/tr[2]/td[2]/table/tbody/tr/td/strong

Я пытаюсь собрать информацию об этом объекте недвижимости и пытаюсь захватить площадь квартиры. Я играл с xpath, который я получаю от отладчика, но я всегда получаю либо пустую строку, либо ошибку, которая говорит, что вы не можете превратить селектор xpath в строку. Не уверен, куда пойти с этим, чтобы получить значение 165.

Пожалуйста, любой вклад, который вы можете предоставить, я смотрел на это в течение нескольких дней.

area = response.xpath('/html/body/div[4]/section/div/div/div[2]/div[1]/div[1]/div[2]/div[3]/table/tbody/tr[2]/td[2]/table/tbody/tr/td/strong')
print(area)

через этот xpath я ожидаю 165, но ничего не получаю. я просто получаю это []

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Попробуйте использовать:

xpath = '//table.item/tr[contains(., "Area")]/td//text()'

// выбор относительного пути

table.item выберите таблицу с item классом

tr[contains(., "Area")] Проверяет все сообщения с текстом 'Area'

td//text() для tr с текстом 'Area' выберите td для этого tr и //text() извлекает каждый текст. что, вероятно, 165.

0 голосов
/ 08 января 2019

Попробуйте использовать относительный XPath вместо абсолютного:

area = response.xpath('//td[@class="value"]/strong')
print(area)

или

area = response.xpath('//th[.="Area (m²)"]/following-sibling::td/strong')
print(area)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...