xpath通过<br/>标签分割字符串

时间:2014-11-19 03:52:30

标签: python web-scraping scrapy

我遇到了python和Scrappy库的问题。当这段代码:

self.item['char_SP4_TIP'] = response.xpath('//p[contains(@class, "spell-tooltip")]/text()').extract()

运行,它会从段落中提取文本,但会将其按<br> tags拆分。

因此,我不得不像self.item['char_SP4_TIP'][0]那样访问它,而是访问[0][1][2]等等,因为有许多<br>个标签。有没有办法解决它,所以它不会被<br>标签拆分?感谢。

1 个答案:

答案 0 :(得分:3)

您的xpath选择所有文本节点,但<br>不是文本节点。

<p class='spell-description'> blah <br><br> blah2 </p>
                Selects these ^^^^          ^^^^^

您可以join分割文字。

texts = response.xpath('//p[contains(@class, "spell-tooltip")]/text()').extract()
text = '\n'.join(texts)

如果该类有多个<p>标记:

text = ['\n'.join(p.xpath('/text()').extract()) 
           for p in response.xpath('//p[contains(@class, "spell-tooltip")]')]