我正在通过从赛马结果网站中提取数据来学习使用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
吗?谢谢。
答案 0 :(得分:-3)
我也有同样的问题,然后我在返回NoneType对象的代码行上方添加了3秒钟的睡眠时间 之后,它运行正常
从导入睡眠时间开始
sleep(3)#在必要的地方