让我发布我想先抓取的部分html
<div id="hello">
<p>abc</p>
<center><img src="image_url"></center>
<p align="center" style="text-align: center;"><b>def</b></p>
<center><img src="image_url"></center>
<p align="center" style="text-align: center;"><b>def</b></p>
<p>abc</p>
<p align="center" style="text-align: center;"><b>def</b></p>
<center><img src="image_url"></center>
<p align="center" style="text-align: center;"><b>def</b></p>
<p>abc</p>
<center><img src="image_url"></center>
</div>
我正在尝试按image_url
顺序抓取图像的 p 和 src 中的文本。问题是,我上面显示的 html 实际上不是静态的,所有页面都有不同的结构,这意味着有时会有更多p
的标签,然后才有center
标签,其中包括img src
由于p
andcenter
标记在每个页面中是随机构造的,因此我正在考虑获取所有p
标记,例如使用response.css('#hello p')
然后循环所有标记p
以获取文本,但是在p
循环时从当前标记获取文本时,还要检查下一个兄弟是否有center
标记,如果这样做,则将其src
附加。
我发现了类似的事情p.xpath('following-sibling::center[1]/img/@src').get()
,因为 p 是迭代过程中的每个段落。
但我认为,这根本不起作用,因为假设我有 4 个p
标签,直到 acenter
我实际上会得到 4 个img src
,因为这p.xpath('following-sibling::center[1]/img/@src').get()
不仅会找到下一个兄弟姐妹,而且会遍历所有兄弟姐妹并查看center
标签是否匹配。
我尝试使用谷歌搜索,但我没有看到任何提及仅检查下一个兄弟姐妹是否是某个标签的内容。任何人都知道我可以让它工作,以便我可以按顺序保存数据吗?
希望我的解释是有道理的。
提前感谢您的任何帮助和建议