错误'NoneType'对象没有属性'find'有时会导致

问题描述 投票:0回答:1

我正在通过从赛马结果网站提取数据来学习使用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?谢谢。

python web-scraping beautifulsoup
1个回答
0
投票

我认为这将解决问题。正在执行“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
© www.soinside.com 2019 - 2024. All rights reserved.