Python BS4 - Как найти все атрибуты в определенном классе - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь извлечь все содержимое тега значения в div.Я могу получить содержимое <div class>, но мне не удалось получить содержимое значений внутри этого класса:

<div class='styled-radio'>
<input type="radio" name="variant_id" id="variant_id_105589" value="105589" 
class="js-change-quantity" data-count-on-hand="1" data-options-threshold="5" 
/>
<label for="variant_id_105589">41</label>
<input type="radio" name="variant_id" id="variant_id_105591" value="105591" 
class="js-change-quantity" data-count-on-hand="1" data-options-threshold="5" 
/>
<label for="variant_id_105591">43</label>
</div>

Есть идеи, почему?

1 Ответ

0 голосов
/ 10 июня 2018
Например,

, если вы хотите, чтобы все теги value из input вы могли сделать это

from bs4 import BeautifulSoup
sdata = """
<div class='styled-radio'>
<input type="radio" name="variant_id" id="variant_id_105589" value="105589"
class="js-change-quantity" data-count-on-hand="1" data-options-threshold="5"
/>
<label for="variant_id_105589">41</label>
<input type="radio" name="variant_id" id="variant_id_105591" value="105591"
class="js-change-quantity" data-count-on-hand="1" data-options-threshold="5"
/>
<label for="variant_id_105591">43</label>
</div>
"""
soup = BeautifulSoup(sdata)
mydivs = soup.findAll('div', {'class': 'styled-radio'})
for div in mydivs: 
    # if you want to print a dict of all values use it
    # for children in div.findAll():
    #     print(children.attrs)

    # if you want to print a specific attr from a specific tag use it
    for children in div.findAll('input'): # find all inputs from `div`
        print(children['value']) # get `value` attrs

Выход

105589
105591

Обновить @bobrobbob прав, мы можем получить атрибуты без findChildren(), а также без attrs, это также будет работать, и вывод будет таким же

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...