Python error: 'NoneType' object has no attribute 'find_all'

I'm adapting a web scraping program from, , to scrape ESPN for baseball data into a CSV. However when I run the second piece of code to write a csv of games I get the 'NoneType' object has no attribute 'find_all' error, from the following section of code

for index, row in teams.iterrows(): _team, url = row['team'], row['url'] r = requests.get(BASE_URL.format(row['prefix_1'], year, row['prefix_2'])) table = BeautifulSoup(r.text).table for row in table.find_all("tr")[1:]: # Remove header columns = row.find_all('td') try: _home = True if columns[1].li.text == 'vs' else False _other_team = columns[1].find_all('a')[1].text _score = columns[2].a.text.split(' ')[0].split('-') _won = True if columns[2].span.text == 'W' else False match_id.append(columns[2].a['href'].split('?id=')[1]) home_team.append(_team if _home else _other_team) visit_team.append(_team if not _home else _other_team) d = datetime.strptime(columns[0].text, '%a, %b %d') dates.append(date(year, d.month, d.day))

I can post the whole program but this is the piece of code the compiler reads the error for.

The full error text is

Traceback (most recent call last): File "C:\Python27\Project Files\Game Parser.py", line 23, in <module> for row in table.find_all("tr")[1:]: # Remove header
AttributeError: 'NoneType' object has no attribute 'find_all'

Any help on how to get this code running would be greatly appreciated.

1

1 Answer

The error means that the table variable that you are building by doing:

table = BeautifulSoup(r.text).table

is returning None. And for row in table.find_all("tr")[1:]: on a None is throwing the error.

You can check if the url in question has a table in the way you are trying to access it. You can do this by printing out the url constructed by this statement:

BASE_URL.format(row['prefix_1'], year, row['prefix_2'])

and then going to this url in your browser to check if it has the table of your interest.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like