为什么我在这个 <p> <span> html 示例中找不到标签内?



>我有一个值需要从div标签中获取。在div中有一个<p><span><input>。当我写出主<div>find_all结果时,我可以看到我想要得到的一切。但是当我在该主div 中查找所有<span>标签时,我需要的标签在结果中不存在/返回。

这是页面源代码上的实际内容

<div class="video-details">
   <p>Web ID: <span itemprop="sku">15COLU2BRNRSTVXXXCAC</span></p>
   <span id="SkuDisplay">
      <p> SKU: 12139884</p>
   </span> 
<input type="hidden" id="selectedSku" value="660852" autocomplete="off">
</div>

这就是我现在所拥有的,它将返回除<p> SKU </p>行之外的所有内容(spanSKUitems(

for spanSKUitems in soup.find_all('div',class_="video-details"):
    for spanSKUitem in spanSKUitems.find_all('span'):
        strspanSKUitem = str(spanSKUitem.get_text())
        if 'SKU:' in strspanSKUitem:
            bidx = strspanSKUitem.index(':')+1
            lidx = len(strspanSKUitem)
            dets['sku']=strspanSKUitem[bidx:lidx].lstrip()

这是包含在spanSKUitems中的内容:

<div class="video-details">
<p>Web ID: <span itemprop="sku">15COLU2BRNRSTVXXXCAC</span></p>
<span id="SkuDisplay"></span> 
<input id="selectedSku" type="hidden" value=""/></div>

我错过了什么或做错了什么?我需要得到的是这个标签<p> SKU: 12139884</p>

以下内容基于您提供的其他 html 工作。数据位于具有不同 id 的 span 标记字符串中。您可以使用 json 加载,然后提取:

import json
data = soup.select_one('#skuDescriptivattribute').text
data = json.loads(data)
print(data['descriptive'][0]['partNumber'])

最新更新