Использование XPath для извлечения данных - PullRequest
0 голосов
/ 29 марта 2019

Я хочу использовать XPath для извлечения данных на веб-странице, но ничего не получаю, как мне извлечь данные?

Я пытался использовать приведенные ниже коды, но они ничего не возвращали.

Я пытался использовать

house.xpath('.//span[@class = "icon icon-pin"]/text()').extract_first()

and

house.xpath('.//span[@class = "ann info-item"]/text()').extract_first()

но я ничего не получаю.

Вот код, который я хочу извлечь:

<span class = "ann-info-item">
     <span class = "icon icon-pin">
         ::before
       </span>
       " San Jorge "
      </span>

Я хочу извлечь «Сан Хорхе», но ничего не получаю.

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Вы должны выбрать внутренний span и затем взять следующий текст, чтобы выражение было похоже на house.xpath('.//span[@class="icon icon-pin"]/following-sibling::text()').get()

В оболочке я мог получить данные следующим образом:

>>> from scrapy import Selector
>>> txt = """<span class = "ann-info-item">
...      <span class = "icon icon-pin">
...          ::before
...        </span>
...        " San Jorge "
...       </span>"""
>>> sel = Selector(text=txt)
>>> sel.xpath('//span[@class="icon icon-pin"]/following-    sibling::text()').get()
u'\n       " San Jorge "\n      '
>>> sel.xpath('//span[@class="icon icon-pin"]/following-sibling::text()').get().strip()
u'" San Jorge "'
0 голосов
/ 29 марта 2019

Попробуйте следующее:

.//span[@class = "ann-info-item"]/text()[2]

Похоже, что вы опустили '-' во втором запросе xpath.Кроме того, классифицированный диапазон amn-info-item имеет два текстовых узла.Используя [2], вы получите второй.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...