我是編碼的初學者,如果我犯了任何錯誤,我深表歉意。我在網上抓取了一個網站并從中得到了一個表格列表。我正在嘗試使用 for 循環將該數據插入到 sqlite 3 中,但返回時出現錯誤。import requestsfrom bs4 import BeautifulSoupimport json##from tkinter import *##bobert=Tk()##bobert.geometry("600x600")import sqlite3##cursor.execute("CREATE TABLE IF NOT EXISTS covid (name STRING, passward STRING, score INTEGER)")connection = sqlite3.connect('covidproject.db')cursor = connection.cursor()##cursor.execute("DROP TABLE IF EXISTS covid ")##cursor.execute("CREATE TABLE IF NOT EXISTS covid (name STRING, confirmed REAL, changes_today REAL,deceased REAL,active REAL, recovered REAL)")url = 'https://ncov2019.live/'headers = {'User-Agent':'Mozilla/5.0'}response = requests.get(url, headers = headers)response.status_codesoup = BeautifulSoup(response.content,'html.parser')stat_table = soup.find_all("table", attrs={"class": "display responsive"})headers = [header.get_text(strip=True) for header in soup.find_all("th")]rows = [dict(zip(headers, [td.get_text(strip=True) for td in row.find_all("td")])) for row in soup.find_all("tr")[1:-1]]for i,x in enumerate(rows,9): cursor.execute("INSERT INTO covid VALUES('"+rows[i]['Name']+"','"+rows[i]['Confirmed']+"','"+rows[i]['Changes Today']+"','"+rows[i]['Deceased']+"','"+rows[i]['Active']+"','"+rows[i]['Recovered']+"')") connection.commit()##print (json.dumps(rows[9], indent=2))##row2=rows[9]##print (rows[9]['Name'])##print (rows[9])這是錯誤:Traceback (most recent call last): File "C:\Users\minio\Downloads\sqlite-tools-win32-x86-3310100\sqlite-tools-win32-x86-3310100\webscraping3.py", line 31, in <module> cursor.execute("INSERT INTO covid VALUES('"+rows[i]['Name']+"','"+rows[i]['Confirmed']+"','"+rows[i]['Changes Today']+"','"+rows[i]['Deceased']+"','"+rows[i]['Active']+"','"+rows[i]['Recovered']+"')")KeyError: 'Name'
1 回答

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
錯誤消息KeyError: 'Name'
表明您的詞典沒有“名稱”鍵。你可以做幾件事來診斷它;
首先要做的最簡單的事情就是檢查基本情況,它是否有名稱條目。IE
print( rows[0]['Name'] )
如果可行,您可能想要做的下一件事是獲得有關哪一行失敗的更好信息,這樣的事情可能可行:
for i,x in enumerate(rows,9): print( rows[i]['Name'] ) cursor.execute("INSERT INTO covid VALUES('"+rows[i]['Name']+"','"+rows[i]['Confirmed']+"','"+rows[i]['Changes Today']+"','"+rows[i]['Deceased']+"','"+rows[i]['Active']+"','"+rows[i]['Recovered']+"')") connection.commit()
您還可以使用像https://realpython.com/python-debugging-pdb/這樣的教程,使用 Python 調試器單步執行代碼?;蛘?,您可以考慮使用 try/except 來忽略特定錯誤。
添加回答
舉報
0/150
提交
取消