Соскреб в Интернете в Python для проблемы цикла не возвращает ожидаемые данные - PullRequest
0 голосов
/ 30 января 2019

У меня проблема с очисткой веб-сайта F1 с использованием BeautifulSoup, когда я указал необходимые данные с помощью цикла for с веб-сайта, однако я получаю только один результат вместо всех результатов в классе.

Ниже приведен мой следующий код

import requests
from bs4 import BeautifulSoup
from csv import writer

page = requests.get("https://www.formula1.com/")

soup = BeautifulSoup(page.content, 'html.parser')
data = soup.find_all("div", class_="race-list")

for container in data:
    countryname = container.find_all("span", class_="name")
    country = countryname[0].text
    racetype = container.find_all("span", class_="race-type")
    rtype = racetype[0].text
    racetime = container.find_all("time", class_="day")
    racetimename = racetime[0].text.replace("\n", "").strip()
    print(country)

Мой токовый выход -

Australia

Ожидаемый вывод -

Australia

Bahrain

China

etc

Заранее спасибо!

1 Ответ

0 голосов
/ 30 января 2019

Виновник:

country = countryname[0].text

Причина:

Есть 21 страна, и вы выбираете только первую с индексом zeroth, т.е.

country = countryname[0].text

Ответ:

Прокрутите «название страны», чтобы найти все элементы:

  import requests
from bs4 import BeautifulSoup
from csv import writer

page = requests.get("https://www.formula1.com/")

soup = BeautifulSoup(page.content, 'html.parser')
data = soup.find_all("div", class_="race-list")
#
# print(data)

for container in data:
  countryname = container.find_all("span", class_="name")
  for count in countryname:
      country = count.text
      racetype = container.find_all("span", class_="race-type")
      rtype = count.text
      racetime = container.find_all("time", class_="day")
      racetimename = count.text.replace("\n", "").strip()
      print(country)

ВЫХОД:

Australia
Bahrain
China
Azerbaijan
Spain
Monaco
Canada
France
Austria
Great Britain
Germany
Hungary
Belgium
Italy
Singapore
Russia
Japan
Mexico
United States
Brazil
Abu Dhabi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...