Почему я не могу найти <p>в теге <span>в этом примере HTML? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть значение, которое нужно извлечь из тега div. Внутри div есть <p>, <span> и <input>. Когда я записываю результаты find_all для основного <div>, я вижу все, что хочу получить. Но когда я просматриваю все теги <span> в этом главном div, то тот, который мне нужен, не существует / не возвращает в результаты.

Это то, что на самом деле на странице источника

<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>

Это то, что у меня есть сейчас, оно вернет все в (spanSKUitems) выше, за исключением строки <p> SKU </p>

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>?

1 Ответ

1 голос
/ 23 апреля 2019

Следующее работает на основе вашего дополнительного предоставленного HTML. Данные находятся в строке тега span с другим идентификатором. Вы можете загрузить с помощью JSON, а затем извлечь:

import json
data = soup.select_one('#skuDescriptivattribute').text
data = json.loads(data)
print(data['descriptive'][0]['partNumber'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...