Python 错误:“NoneType"对象没有属性“find_all" [英] Python error: 'NoneType' object has no attribute 'find_all'
问题描述
我正在改编一个网页抓取程序,http://danielfrg.com/blog/2013/04/01/nba-scraping-data/#disqus_thread,将 ESPN 的棒球数据抓取到 CSV 中.但是,当我运行第二段代码来编写 csv 游戏时,我从以下代码部分中得到NoneType"对象没有属性find_all"错误
I'm adapting a web scraping program from, http://danielfrg.com/blog/2013/04/01/nba-scraping-data/#disqus_thread, 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.
完整的错误文本是
Traceback (most recent call last):
File "C:Python27Project FilesGame 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.
推荐答案
该错误意味着您正在构建的 table
变量:
The error means that the table
variable that you are building by doing:
table = BeautifulSoup(r.text).table
正在返回 None
.并且 for row in table.find_all("tr")[1:]:
在 None
上抛出错误.
is returning None
. And for row in table.find_all("tr")[1:]:
on a None
is throwing the error.
您可以检查有问题的 url
是否有您尝试访问的表格.您可以通过打印出由该语句构造的 url
来实现:
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.
这篇关于Python 错误:“NoneType"对象没有属性“find_all"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!