Как я могу найти Xpath атрибута title тега HTML и распечатать текст указанного заголовка - PullRequest
0 голосов
/ 13 января 2019

Я использую библиотеку питонов. Я хочу иметь возможность очищать текст, содержащийся в атрибуте <h1> s title, из следующего HTML-кода с помощью селекторов Xpath.

<h1>
  <a href="https://www.facebook.cpm/" title="Go to Facebook home">
    <i class="fb_logo img sp_z3EmYTfbUvU_1_5x sx_91465b">...</i>
   </a>
</h1> 

Это то, что я уже пробовал, но это не работает. Как это можно заставить работать?

response.xpath('//h1/a/title()').extract()

Мне нужны следующие данные:

"Go to Facebook home"

Ответы [ 2 ]

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

похоже, что вы используете неправильный xpath для извлечения атрибута title

Использовать как:

response.xpath('//h1/a/@title').extract()    #i just change /title() to @title
0 голосов
/ 13 января 2019

При использовании селекторов в scrapy вы должны сначала импортировать scrapy's Selector, например:

from scrapy.selector import Selector

Правильный способ использования xpath в scrapy теперь заключается в использовании класса Selector, например:

response = '''<h1>
  <a href="https://www.facebook.cpm/" title="Go to Facebook home">
    <i class="fb_logo img sp_z3EmYTfbUvU_1_5x sx_91465b">...</i>
   </a>
</h1>'''

title = Selector(text=response).xpath('//h1/a/@title').extract()

Это вернет объект списка:

['Go to Facebook home']

Теперь вы можете получить текст в виде строки, используя индекс списка:

title[0]

Я настоятельно рекомендую прочитать scrapy docs , особенно на селекторах и даже узнать о xpath тоже.

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