我试图使用Scrapy获取各种文章的HTML。这些文章还包括我想单独处理的图像。
如果我的文章的HTML如下所示:
<div class="article>
<p>This is a sentence.</p>
<p>This is a sentence.</p>
<img src="/path/to/image.jpg"/>
<p>This is a sentence.</p>
<p>This is a sentence.</p>
</div>
如何抓取非图像HTML,或者:
<div class="article>
<p>This is a sentence.</p>
<p>This is a sentence.</p>
<p>This is a sentence.</p>
<p>This is a sentence.</p>
</div>
我目前正在尝试:
article = response.xpath("//div[@class='article'][not(img)]").extract()
...但这还包括图片。
答案 0 :(得分:1)
XPath用于选择,而不是转换或重新排列。
您可以选择没有div
个孩子的img
元素:
//div[@class='article' and not(img)]
或没有img
后代:
//div[@class='article' and not(.//img)]
或者,您可以选择div
的{{1}}元素的内容:
p
或不是//div[@class='article']/p
:
img
但是你无法选择所请求的HTML,
//div[@class='article']/*[not(self::img)]
因为这是输入文档中存在的标记的重新排列,而不是选择。
答案 1 :(得分:0)
请尝试以下代码:
article = response.xpath("//div[@class='article']//*[not(self::img)]").extract()