我正在尝试使用scrapy来抓取一些诗歌,我有这样的文字:
Lorem ipsum dolor sit amet,<br>
consectetuer adipiscing elit.<br>
<br>
Aenean commodo ligula eget dolor.<br>
Aenean massa
我用这样的scrapy选择它的xpath:
In [1]: sel.xpath('//div[@class="box"]/text()').extract()
Out[1]:
[u'Lorem ipsum dolor sit amet,',
u'consectetuer adipiscing elit.',
u'Aenean commodo ligula eget dolor.',
u'Aenean massa',]
我怎样才能做到这一点它不会忽略额外的br?
答案 0 :(得分:3)
<br>
标记 Scrapy会忽略<br>
标记,因为您告诉它这样做。你XPath查询
//div[@class="box"]/text()
选择//div[@class="box"]
的所有直接文本节点子节点,并仅选择它们。其中任何其他节点类型都被忽略,其中包括<br>
标记。
<br>
代码如果您还想要返回<br>
个令牌,请同时选择文本节点和<br>
令牌:
(//div[@class="box"]/text() | //div[@class="box"]/br)
现在,循环遍历所有结果。如果您通过文本节点返回其内容,则(<br>
)标记将返回换行符。