在scrapy中匹配多个<p>标签

时间:2015-12-08 21:46:13

标签: python xpath scrapy

我有以下html

<div class="articleBody">
  <p>
    <strong>Text</strong> lorem ipsum... 
    <strong>lorem ipsum...</strong>
  </p>
  <p>lorem ipsum 
    <strong> lorem ipsum lorem ipsum</strong>
    lorem ipsum...lorem ipsum...lorem ipsum...lorem ipsum...
  </p>
</div>

更一般地说,我有一个<p>标记列表,里面有几个<strong>标记。

我想获取所有<p>代码的文字,减去<strong>代码...而且,我只是指“articleBody”div中的文字类。

我拥有的是

response.xpath('string(//div[@class="articleBody"]//p)'.extract()

但只返回第一个<p>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

试一试:

for node in response.xpath('//div[@class="articleBody"]//p'):
        print node.xpath('string()').extract()

...然后你可以连接你的字符串或将它们添加到列表或其他任何内容,而不是像我一样打印它们。

还有xpath 2.0的string-join()函数,但看起来scrapy支持xpath 1.0。

有关string-join的更多信息,请点击此处:http://www.w3.org/TR/xpath-functions/#func-string-join