如何循环遍历 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']
例如我有一个 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']