Python - BeautifulSoup - возвращается NoneType; Ценность определенно существует - PullRequest
0 голосов
/ 01 августа 2020

ОБНОВЛЕНИЕ: Я скопировал весь свой код. Я не программист, поэтому, вероятно, он неправильно отформатирован, et c. Команды PRINT в конце предназначены только для проверки того, что я действительно получаю какой-то вывод, я планирую записать в базу данных MySQL, как только у меня все будет работать нормально.

Я пытаюсь почистить некоторые подробности о скачках по указанному ниже URL. Я написал код, который очищает детали гонки - имена лошадей, время и т. Д. c - и по большей части он работает нормально.

Однако по какой-то причине, когда он анализирует URL-адрес в коде ниже, он возвращает ошибку NoneType после возврата примерно 2/3 записей (после того, как он попадает в гонку 20:05 в Лингфилде).

Я посмотрел на источник и насколько Я вижу, в Div FastResult__item есть текст (внутри тега). И код возвращает значения для других Winning Trainers (также работает, если я изменяю дату в URL-адресе).

Я не понимаю, почему он возвращает None вместо ожидаемого значения Winning Trainer: Simon Crisford . Любая помощь будет принята с благодарностью - я ни в коем случае не эксперт в использовании Python, поэтому go просто.

Код (сейчас скопирован весь мой код):

from bs4 import BeautifulSoup
import requests

page = requests.get("https://myracing.com/results/2019-08-03/")
soup = BeautifulSoup(page.text, "html.parser")
race_listings = soup.find_all("article", class_="FastResult")
for a in race_listings:
    a_meeting = a.find("h3", class_="FastResult__title")
    a_time = a.find("h3", class_="FastResult__title")
    a_draw = a.find("span", class_="FastResult__draw_no").text.strip()
    a_winning_horse = a.find("span", class_="FastResult__horse-name")
    for div in a_winning_horse("sup", {'class':'Racecard__sup-text'}):
        div.decompose()
    a_winning_jockey = a.find("span", class_="FastResult__jockey-name")
    for div in a_winning_jockey("sup", {'class':'Racecard__sup-text'}):
        div.decompose()
    a_winning_trainer = a.find("div", class_="FastResult__item")
print(a_meeting.text[6:].strip())
print(a_time.text[0:6].strip())
print(a_draw.strip("()"))
print(a_winning_horse.text.strip())
print(a_winning_jockey.text[3:].strip())
print(a_winning_trainer.text.strip())

Ошибка:

Traceback (most recent call last):
  File "/Users/andyjarvis/Documents/Python/horse_predictor_v2.py", line 30, in <module>
    print(a_winning_trainer.text.strip())
AttributeError: 'NoneType' object has no attribute 'text'

1 Ответ

0 голосов
/ 02 августа 2020

Мне удалось «исправить» это, в основном игнорируя это. Я думаю, что есть проблема с веб-сайтом, так как я могу извлечь большую часть необходимой мне информации. Кажется, это единственный тренер, который все это держит.

Я ввел следующий код под строкой 'a_winning_trainer =' и могу продолжить:

if a_winning_trainer is None:
    continue

Ура

...