Есть несколько способов сделать это.Ваша команда сработала для меня.Хотя, поскольку у вас есть знак евро, вы можете убедиться, что ваш скрипт использует правильную кодировку.Кроме того, помните, что find_all
вернет список, а не только первый соответствующий элемент.
# -*- coding: UTF-8 -*-
from bs4 import BeautifulSoup
html = """
<div class="investor-item" usrid="75500">
<div class="row">
<div class="col-sm-3">
<div class="number">10,000€</div>
<div class="date">03 December 2018</div>
</div>
"""
soup = BeautifulSoup(html, 'lxml')
mytag = soup.find('div', {"class": "investor-item"})
mytag2 = soup.find('div', class_="investor-item")
mytag3 = soup.find_all('div', class_="investor-item")[0]
mytag4 = soup.findAll('div', class_="investor-item")[0]
mytag5 = soup.findAll('div',{"class":"investor-item"})[0]
print(mytag['usrid']) # Returns 75500
print(mytag2['usrid']) # Also returns 75500
print(mytag3['usrid']) # Also returns 75500
print(mytag4['usrid']) # Also returns 75500
print(mytag5['usrid']) # Also returns 75500
EDIT : Вот еще несколько подробностей о 5 различных примерах, которые я дал.
- Типичным соглашением об именах для функций Python является использование всех строчных и подчеркиваний, в то время как в некоторых других языках используется регистр верблюдов.Поэтому, хотя
find_all()
является более "официальным" способом сделать это в BeautifulSoup с Python, а findAll
- это то, что вы увидите в BeautifulSoup для других языков, Python, похоже, тоже принимает это. - Как уже упоминалось,
find_all
возвращает список, тогда как find
возвращает первое совпадение, поэтому выполнение find_all
и получение первого элемента ([0]
) дает тот же результат. - Наконец,
{"class": "investor-item"}
является примером общего способа указания атрибутов, выходящих за пределы только имени тега HTML.Вы просто передаете дополнительные параметры в словаре, как это.Но поскольку class
является таким распространенным атрибутом для поиска в теге, BeautifulSoup дает вам возможность не использовать словарь и вместо этого набрать class_=
, а затем строку с именем класса, которое вы ищете.Причина этого подчеркивания в том, что Python не путает его с class
, командой Python для создания класса Python в вашем коде.