Webscraping AttributeError: у объекта 'NoneType' нет атрибута 'текст' - PullRequest
0 голосов
/ 04 мая 2018

Я снимаю футбольный график с этой страницы .

Это мой код:

import requests
my_url = requests.get('http://www.vivoelfutbol.com.mx/futbolmexicano.php') 

from bs4 import BeautifulSoup as soup 
page_soup = soup(my_url.text, "html.parser")
containers = page_soup.findAll("div", {"class":"det"})


for result in containers:
    time = result.find('div', {'class':'hor'}).text
    hometeam = result.find('a').text
    score = result.find('a', {'title':'Analisis y Antecedentes'}).text
    awayteam = result.find('div', {'class':'eqvc'}).text
    print(time + " " + hometeam + " " + score + " " + awayteam)

Но я получаю эту ошибку:

19:30 UNAM 1-4 America
21:30 Tijuana 1-1 Monterrey
19:30 Tigres --- Santos
21:30 Morelia --- Toluca
19:00 America --- UNAM
21:00 Monterrey --- Tijuana
12:00 Toluca --- Morelia
18:00 Santos --- Tigres
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    time = result.find('div', {'class':'hor'}).text
AttributeError: 'NoneType' object has no attribute 'text'

Дело в том, что строка ошибки, похоже, работает, потому что возвращает время.

1 Ответ

0 голосов
/ 04 мая 2018

Вы не можете использовать этот селектор, если хотите анализировать только расписание, так как в таблице лидеров также есть элементы с классом с именем det.

Вот как вы можете это сделать:

import requests
my_url = requests.get('http://www.vivoelfutbol.com.mx/futbolmexicano.php')

from bs4 import BeautifulSoup as soup
page_soup = soup(my_url.text, "html.parser")
containers = page_soup.find_all("div", {"class":"bordermitad"})[0].find_all("div", {"class":"det"})

for result in containers:
    time = result.find('div', {'class':'hor'}).text
    hometeam = result.find('a').text
    score = result.find('a', {'title':'Analisis y Antecedentes'}).text
    awayteam = result.find('div', {'class':'eqvc'}).text
    print(time + " " + hometeam + " " + score + " " + awayteam)

выход

19:30 UNAM 1-4 America
21:30 Tijuana 1-1 Monterrey
19:30 Tigres --- Santos
21:30 Morelia --- Toluca
19:00 America --- UNAM
21:00 Monterrey --- Tijuana
12:00 Toluca --- Morelia
18:00 Santos --- Tigres
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...