如何循环遍历 HTML 以使用 scrapy 按顺序获取数据?

How to loop through HTML to get data in order with scrapy?

例如我有一个 HTML 这样的:

<div id="des">
    <p>One</p>
    <p>Second</p>
    <img src="firstimage" alt="">
    <p>Third</p>
    <img src="secondimage" alt="">
    <p>Fourth</p>
</div>

我可以使用这一行来获取所有 p 文本:

des = response.css("#des p::text").getall()

或图片相同。

然而,我想要的是我将拥有一个数据数组(p 的文本和 img 的 src),例如 HTML 页面中的命令:

["one", "second", "firstimage", "third", "secondimage", "fourth"]

我知道有些项目可能对我有帮助,但不知道如何实现。有没有一种方法可以让我在 div id="des" 中循环并按顺序获取数据?

您可以在一个查询中使用两个选择器,它们将按出现的顺序提取。

response.css("#des p::text, #des img::attr(src)").extract()
#['One', 'Second', 'firstimage', 'Third', 'secondimage', 'Fourth']