Вам необходимо добавить окончательную строку в маршрут Xpath text () .
В указанном вами случае c завершить маршрут Xpath
'//[@id="page_match_1_block_match_info_5"]/div[2]/div[2]/div[1]/dl/dd[2]/a'
'...dd[2]/a/span/text()'
Окончательный путь Xpath:
'// [@ id = "page_match_1_block_match_info_5"] / div [2] / div [2] / div 1 / dl / dd [2] / a / span / text () '
Пример:
Предположим, что вы хотите извлечь слово HOME из этого набора тегов HTML.
HTML:
<nav class="main-nav mobileNav">
<ul>
<li class="page-collection active-link">
<a href="/">HOME</a>
</li>
<li class="index-collection">
<a href="/featuring">FEATURING</a>
</li>
<li class="page-collection">
<a href="/contact">CONTACT</a>
</li>
</ul>
</nav>
python Кодовая строка:
# Both selectors (extract_first, get) will obtain the same result.
# Add the text() component as a final str. into the Xpath route.
response.xpath('//*[@class="main-nav mobileNav"]/ul/li/a/text()').extract_first()
response.xpath('//*[@class="main-nav mobileNav"]/ul/li/a/text()').get()
Вывод:
'HOME'
Объяснение:
Вам нужно найти узел текстового типа внутри фактического узла, который вы посещаете.
<a href="/">HOME</a>
Это последний узел, который вы посещаете, прежде чем получить текстовое содержимое. Добавление текста () в последний маршрут Xpath
'../a/text()'
В результате получится текст, содержащий тег.
'HOME'
Ссылка: Xpath - Wikipedia