Почему метод ‘find ()’ возвращает только первое значение? Как я могу получить все значения?

#python #web-scraping #beautifulsoup

#python #веб-очистка #beautifulsoup

Вопрос:

Я пытаюсь удалить все значения из URL, но получаю только первое значение. В чем проблема? Как я могу получить все значения?

 import requests
#Importing beautiful soup for scraping
from bs4 import BeautifulSoup

url='http://howstat.com/cricket/Statistics/Players/PlayerOverviewSummary.asp?PlayerID=4104'

data = requests.get(url)
html_code = data.content
# print(html_code)

#Parser
soup = BeautifulSoup(html_code, 'html.parser')

title2 = soup.find(class_='FieldValue')

abcd=[]

for i in title2.stripped_strings:
    abcd.append(i)


print(abcd)
  

Комментарии:

1. Если бы только был find_all метод. Пожалуйста, прочитайте документы…

Ответ №1:

Попробуйте это:

 import requests
from bs4 import BeautifulSoup

url = 'http://howstat.com/cricket/Statistics/Players/PlayerOverviewSummary.asp?PlayerID=4104'
data = requests.get(url)
html_code = data.content
soup = BeautifulSoup(html_code, 'html.parser')
title2 = soup.find_all(class_='FieldValue')

print([i.getText(strip=True) for i in title2])
  

Вывод:

 ['17', '0', '974', '243', '57.29', '4', '3', '0', '116', '22', '55.98', '0.0', '0', '0', 'N/A', '0', '0', '', '', '', 'N/A', '7', '2', '3', '0', '0', '0', '0', '0', '0', '', '3', '0', '36', '32', '12.00', '0', '0', '0', '6', '0', '92.31', '0.0', '0', '0', 'N/A', '0', '0', '', '', 'N/A', '1', '1', '0', '0', '0', '0', '', '20', '0', '1010', '243', '50.50', '4', '3', '0', '122', '22', '56.77', '0.0', '0', '0', 'N/A', '0', '0', '0/999', '', 'N/A', '8', '2', '0', '0', '0', '0', 'N/A', '80', '3', '1648', '106', '21.40', '7', '1', '5', '155', '67', '134.53', '0.0', '0', '0', 'N/A', '0', '0', '', '', 'N/A', '32', '2', '0', '0', '0', '0', '']