Я використовую 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
, дозволяючи запитам обробляти кодування.