【发布时间】:2023-04-03 22:45:02
【问题描述】:
<div id="something">
<a id="dd_start">
<p>A</p
<h2>B</h2>
<p>C</p>
<h5>D</h5>
<script> </script>
<p>E</p>
<div></div>
</div>
如何获取最后一个p之前的所有元素?我想要p、h2、p 和h5:A B C D。
我试过了:
item['contents'] = ' '.join(response.xpath('//*[@id="something"]/preceding-sibling::*p//text()').extract()).strip()
item['contents'] = ' '.join(response.xpath('//*[@id="something"]/preceding-sibling::p[last()]//text()').extract()).strip()
item['contents'] = ' '.join(response.xpath('//*[@id="something"]/p[last()]/preceding-sibling::*//text()').extract()).strip()
似乎无法正常工作。我的内容总是返回空。
【问题讨论】:
-
您是否打算将您添加的文本设置为 within 或 between @ 987654330@、
h2等元素?您现在正在在之间显示它。 -
嗯,我想要最后一个
之前的所有文本 .. 我客户的网站有时会与 h2 或 h3 之类的其他内容混合在一起 .. 我实际上想把内容刮掉 ..
-
我可以go on and on with updates,猜猜你想要什么,或者你可以为自己和你的读者节省大量时间并创建一个minimal reproducible example 你真的应该已经完成了。
标签: python html xml xpath scrapy