Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 匹配多个<;p>;刮痕标签_Python_Xpath_Scrapy - Fatal编程技术网

Python 匹配多个<;p>;刮痕标签

Python 匹配多个<;p>;刮痕标签,python,xpath,scrapy,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&

我有如下类似的
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>
但这只返回第一个

任何帮助都将不胜感激。

试一试:

for node in response.xpath('//div[@class="articleBody"]//p'):
        print node.xpath('string()').extract()
…然后您可以连接字符串或将它们添加到列表或其他任何内容,而不是像我那样打印它们

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

更多关于字符串连接的信息,请点击此处:

尝试一下:

for node in response.xpath('//div[@class="articleBody"]//p'):
        print node.xpath('string()').extract()
…然后您可以连接字符串或将它们添加到列表或其他任何内容,而不是像我那样打印它们

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


关于字符串连接的更多信息,请参见此处:

我不知道scrapy,但您应该能够使用
//div[@class=“articleBody”]/p/text()
p.s来获取所有文本。如果您不关心p标记是否是div的直接子标记,我可能误解了“减去标记”的含义。Luciddream是正确的,或者//p而不是/p[@class=“articleBody”]。可以将所有内容转储到一个字符串中,如:'.join(response.xpath('//div[@class=“articleBody”]/p//text()).extract())我不知道scrapy,但您应该能够使用
//div[@class=“articleBody”]/p/text()
p减去标记意味着.Luciddream是正确的,或者如果您不关心p标记是否是div[@class=“articleBody”]的直接子级,则使用//p而不是/p。可以将所有内容转储到一个字符串中,如:“”.join(response.xpath('//div[@class=“articleBody”]/p//text()).extract())