我目前使用python解析器遇到了障碍,我应该使用该解析器从跟踪密歇根州COVID-19病例的网站中提取信息。解析器正在利用python的XML Dom Minidom库,并按预期工作,但是当我打算将信息插入MySQL数据库时,它不会产生任何结果,而是有一个空表。我不确定我的代码有什么问题,并且我已经尝试了多种方法,包括:
+ -------------- + ---------------- + --------------- -+
|县名|案例确认|已确认死亡|
+ -------------- + ---------------- + --------------- -+
有人可以帮我吗?
这里是文件parser.py:
import sys
import xml.dom.minidom
import MySQLdb
document = xml.dom.minidom.parse(sys.argv[1])
tableElements = document.getElementsByTagName('table')
db = MySQLdb.connect(
host="localhost",
user="root",
passwd="root",
db="temp"
)
curr = db.cursor()
curr.execute("CREATE DATABASE IF NOT EXISTS cases")
curr.execute("USE cases")
query = "CREATE TABLE IF NOT EXISTS casesBreakdown (countyName varchar(255), confirmedCases INT, confirmedDeaths INT, newCases INT, newDeaths INT)"
curr.execute(query)
#for tr in tableElements[1].getElementsByTagName('tr'):
for tr in tableElements[0].getElementsByTagName('tr'):
data = []
for td in tr.getElementsByTagName('td'):
for node in td.childNodes:
if node.nodeType == node.TEXT_NODE:
data.append(node.nodeValue)
x = ",".join(data)
test = []
for case in x.split(","):
test.append(case)
#print(test)
sql = "INSERT INTO casesBreakdown (countyName, confirmedCases, confirmedDeaths) VALUES (%s, %s, %s)"
curr.executemany(sql, test)
db.commit()
这是指向我使用作为命令行参数arg传递的tagsoup转换为xhtml的页面的链接:https://pastebin.com/JU8cDJJ5
任何帮助将不胜感激。谢谢!
现在可以使用,我将进行最后的调试。一个问题是您经常重新初始化test = []
。另一个问题是缩进,但是很难确定那是否是将代码转录为SO。
test = []
for tr in tableElements[0].getElementsByTagName('tr'):
data = []
for td in tr.getElementsByTagName('td'):
for node in td.childNodes:
if node.nodeType == node.TEXT_NODE:
data.append(node.nodeValue)
t = tuple(data)
if len(t) == 3:
test.append(t)