我需要从自定义控件/标签/字体样式中检索价格文本。识别价格属于哪个值的唯一方法是数据编号data-number="025.00286R"
。末尾的字母是区分不同控制部分div的唯一元素。
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" data-number="025.00286R" name="itemSelected[]" value="7684cd019b98489eb330010000039848" id="checkbox-7684cd019b98489eb330010000039848">
<label class="custom-control-label" for="checkbox-7684cd019b98489eb330010000039848">
<meta itemprop="price" content="676.0512">
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
€676.05
</font></font>
</label>
</div>
字符串
我使用以下代码来检索页面中data-number
的总数:
box_contents = response.css('div[class*="mad-article-list-box"]').re(r"[0-9]+.\d+[0-9][A-Z]+")
box_contents = list(dict.fromkeys(box_contents))
型
因此,框内容以列表的形式呈现(对于列表中的每个数字,都有一个相同的custom control
类:
['025.00286GA', '025.00286GV', '025.00286NWA', '025.00286NW', '025.00286NWV', '025.00286R']
型
现在的问题是<input type="checkbox"
不包含任何子div,我需要它下面的div的嵌套文本内容。<label class="custom-control-label"
个
我可以通过以下方式找到<input
:
response.xpath('//input[contains(@data-number, "' + box_contents[0] + '")]')
型
但是,现在我需要在找到<input type="checkbox"
之后在xpath中增加1,或者在xpath中减少1。在此之后,很容易提取所有嵌套的文本和我要查找的值€676.05
。我该怎么做呢?有没有更好的方法来实现这一点?
1条答案
按热度按时间v2g6jxz61#
您可以使用
custom-control
类分别遍历每个div
元素,并一次提取每个复选框和标签的信息,而不是一次收集所有这些信息。然后,这两段数据已经配对,因为你将一次迭代一对,并且因为你将从两个数据元素的父元素开始,找到每个元素的正确路径更加简单。举例来说:
字符串
产出
型