我正在从这个link中提取数据。在下面的代码中,是否有任何方法可以对findAll()进行错误处理
现在,表中没有任何内容:
我的代码
import requests
from bs4 import BeautifulSoup
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/87.0.4280.88 Safari/537.36 '
}
def testingCode(stockIdNumber):
MalaysiaStockBizURL = requests.get(str('https://www.malaysiastock.biz/Corporate-Infomation.aspx?securityCode='+ str(stockIdNumber)),headers=header)
MalaysiaStockBizParser = BeautifulSoup(MalaysiaStockBizURL.text, 'html.parser')
try:
shareholdingChangesTable = MalaysiaStockBizParser.find('table', { 'id': 'ctl19_gvShareholdingChange'}).findAll('tr', limit=11)
for testShare in shareholdingChangesTable:
titleelem = testShare.find('td')
if titleelem:
print(titleelem)
else:
print("Error")
except IndexError:
print("Malaysia Stockbiz - Error on Shareholding Changes.")
testingCode('5090') # This one has error ''NoneType' object has no attribute 'findAll'', so need error handling
#testingCode('0105') # This one return some result
如果代码是MalaysiaStockBizParser.find('table', { 'id': 'ctl19_gvShareholdingChange'})
,我可以进行错误处理,因为它将生成None
。但是如果使用MalaysiaStockBizParser.find('table', { 'id': 'ctl19_gvShareholdingChange'}).findAll('tr', limit=11)
,我就不能。这将使我直接陷入错误“NoneType' object has no attribute 'findAll
”。你知道我该怎么做吗
您可以将此link作为表格显示方式的示例:
您试图捕捉错误的错误。正如在错误消息中所看到的,您将获得AttributeError,因此您需要捕获该错误。将except语句更改为此将解决此问题:
输出:
你可以试试那样的
相关问题 更多 >
编程相关推荐