错误“ NoneType”对象没有属性“查找”,有时会导致

时间:2018-09-13 13:42:11

标签: python web-scraping beautifulsoup

我正在通过从赛马结果网站中提取数据来学习使用Python(3.7)和BS4进行网络爬取。该网站为http://racing.hkjc.com/racing/Info/Meeting/Results/English/Local/20080412/ST/5

这是我的代码的一部分。主要目的是尝试从表> tbody> tr> td中获取数据。该表的类别为{'class': 'tableBorder trBgBlue tdAlignC number12 draggable'}

import urllib.request
from bs4 import BeautifulSoup

theURL = "http://racing.hkjc.com/racing/Info/Meeting/Results/English/Local/20080412/ST/5"
thePage = urllib.request.urlopen(theURL)
soup = BeautifulSoup(thePage, "html.parser")
table = soup.find('table', {'class': 'tableBorder trBgBlue tdAlignC number12 draggable'})
tBody = table.find('tbody')
for tRows in tBody.find_all('tr'):
   # Get the td.text

有时候,我可以获取表中的所有数据并将其写入csv文件。但是有时会导致以下错误。

Traceback (most recent call last):
  File "K:/fyp/raceRecord.py", line 32, in <module>
    tBody = table.find('tbody')
AttributeError: 'NoneType' object has no attribute 'find'

我知道此错误是由于table.find('tbody')返回None引起的。但是,我不知道为什么有时代码可以工作,但有时却不能。是因为页面仍在加载table.find('tbody') = None吗?谢谢。

1 个答案:

答案 0 :(得分:-3)

我也有同样的问题,然后我在返回NoneType对象的代码行上方添加了3秒钟的睡眠时间 之后,它运行正常

从导入睡眠时间开始

sleep(3)#在必要的地方