У меня есть HTML, который выглядит следующим образом.
<div class="topics">
<h2>Topics 1</h2>
News
Sports
<h2>Topics 2</h2>
Entertainment
Business
</div>
Я хочу иметь возможность получить текст ["News\nSports", "Entertainment\nBusiness"]
, используя XPath
.Как мне это сделать?
//div[contains(@class,"topics")]/h2/text()
дает мне текст h2
, но я также хочу, чтобы соответствующий (следующий) текст ниже также.
//div[contains(@class,"topics")]/h2/following-sibling::text()
действительно дает мневесь текст после h2
, но в таком шаблоне, как этот массив ["News", "\n", "Sports", "Entertainment", "\n", "Business"]
.Теперь я никак не могу связать массив текстовых строк с заголовком.
Я использую Scrapy v1.5.1 для выпуска XPath.
content.xpath("//div[contains(@class,"topics")]/h2/following-sibling::text()").extract()
Странно то, что этот запрос XPath работает в Chrome (просматривая выделенный желтым цветом текст), но не через Scrapy.