Python получает часть после класса div - PullRequest
0 голосов
/ 09 февраля 2019

Вот что у меня есть

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

Я бы хотел отказаться от "75500", но понятия не имею, как это сделать.Когда я использую

soup.findAll('div',{"class":"investor-item"})

, он не захватывает то, что я хочу.Есть ли у вас какие-либо предложения?

1 Ответ

0 голосов
/ 09 февраля 2019

Есть несколько способов сделать это.Ваша команда сработала для меня.Хотя, поскольку у вас есть знак евро, вы можете убедиться, что ваш скрипт использует правильную кодировку.Кроме того, помните, что 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 в вашем коде.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...