/ / Красивий суп, що повертається небажаними персонажами - пітон, красивий суп, пітон-унікод

Прекрасний суп, що повертається небажаним персонажам - пітон, красивийсуп, пітон-юнікод

Я використовую Beautiful Soup для обрізання сторінок, намагаючись досягти висоти певних спортсменів:

req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
height = soup.find_all("strong")
height = height[2].contents
print height

На жаль, це те, що повертається:

[u "6" 0 ""]

Я також намагався:

height = str(height[2].contents)

і

height = unicode(height[2].contents)

але я все одно отримую [u "6" 0 ""] як результат.

Як мені просто повернути 6 "0" без зайвих символів? Спасибі за вашу допомогу!

Відповіді:

0 для відповіді № 1

Це не "т" зайві символи ". .contents повертає список, у вибраному вами елементі є лише одна дочірка, і тому ви отримуєте список, що містить один елемент. Python друкує список як псевдо код Python, щоб ви могли побачити, що це таке і що в ньому.

Можливо, ви хочете .string?


0 для відповіді № 2

Якщо ви хочете лише третього сильний тег, що вам не потрібно всіх шукати, ви можете використовувати селектор css nth-of-type, як тільки у вас є елемент, який вам просто потрібно зателефонувати .text:

req = requests.get(url)
soup = BeautifulSoup(req.content, "html.parser")
height = soup.select_one("strong:nth-of-type(3)").text

print(height)

Ви також повинні телефонувати .content, дозволяючи запитам обробляти кодування.