首页 > 解决方案 > Webscraping AttributeError: 'NoneType' object has no attribute 'text'

问题描述

i'm webscraping a soccer schedule from this page.

This is my code:

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)

But I'm getting this error:

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'

The thing is, the error line seems like it works because it is returning the time.

标签: pythonweb-scraping

解决方案


如果您只想解析时间表,则不能使用该选择器,因为排行榜也具有名为 的类的元素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

推荐阅读