Я хочу получить значение нескольких идентификаторов внутри тега, который находится в div - PullRequest
0 голосов
/ 19 октября 2019

Вот код HTML:

<div class="sizeBlock">
 <div class="size"> 
    <a class="selectSize" id="44526" data-size-original="36.5">36.5</a> 
 </div> 
 <div class="size inactive active"> 
    <a class="selectSize" id="44524" data-size-original="40">40</a> 
 </div> 
 <div class="size "> 
    <a class="selectSize" id="44525" data-size-original="40.5">40.5</a> 
 </div> 
</div>

Я хочу получить значения тега id и размер оригинала данных.

Вот мой код:

for sizeBlock in soup.find_all('a', class_="selectSize"):
        aid  = sizeBlock.get('id')
        size = sizeBlock.get('data-size-us')

Проблема в том, что он получает значения других идентификаторов, которые имеют тот же класс "selectSize".

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Я думаю, это то, что вы хотите. У вас не будет идентификаторов и размеров из данных в div class = 'size active is active'

for sizeBlock in soup.select('div.size a.selectSize'):
    aid = sizeBlock.get('id')
    size = sizeBlock.get('data-size-us')
0 голосов
/ 20 октября 2019

Уже ответили здесь Как красивому супу (bs4) соответствовать только одному и только одному классу css

Использовать soup.select. Вот простой тест:

from bs4 import BeautifulSoup

html_doc = """<div class="size">
<a class="selectSize otherclass" id="44526" data-ean="0193394075362" " data-tprice="" data-sku="1171177-36.5" data-size-original="36.5">5</a>
</div>"""

soup = BeautifulSoup(html_doc, 'html.parser')

#for sizeBlock in soup.find_all('a', class_= "selectSize"): # this would include the anchor
for sizeBlock in soup.select("a[class='selectSize']"):
    aid = sizeBlock.get('id')
    size = sizeBlock.get('data-size-original')
    print aid, size
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...