我正在通过从赛马结果网站提取数据来学习使用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
?谢谢。
我认为这将解决问题。正在执行“urllib.request.urlopen”时,页面未正确加载。代码正在检查表是否存在。请检查并让我知道。谢谢。
import urllib.request
from bs4 import BeautifulSoup
theURL = "http://racing.hkjc.com/racing/Info/Meeting/Results/English/Local/20080412/ST/5"
while (True):
thePage = urllib.request.urlopen(theURL)
soup = BeautifulSoup(thePage, "html.parser")
table = soup.find('table', {'class': 'tableBorder trBgBlue tdAlignC number12 draggable'})
if (table != None):
tBody = table.find('tbody')
break