В настоящее время у меня есть контрольно-пропускной пункт с парсером python, который я должен использовать для извлечения информации с веб-сайта, который отслеживает случаи COVID-19 в штате Мичиган. Парсер использует библиотеку XML Dom Minidom из python и работает как положено, но когда я go вставляю информацию в базу данных MySQL, он не дает результатов, а вместо этого имеет пустую таблицу. Я не уверен, что не так с моим кодом, и я пробовал несколько вещей, в том числе:
- Преобразование списка, в котором хранятся очищенные данные, в кортеж
- Цикл по списку и выполнение оператора вставки ... и других незначительных настроек безрезультатно. Таблица должна содержать название округа, подтвержденные случаи и подтвержденные случаи смерти в таком формате:
+ -------------- + --- ------------- + ----------------- +
| countyName | подтвержденные случаи | подтвержденные смерти |
+ -------------- + ---------------- + --------- -------- +
Может кто-нибудь помочь мне?
Вот файл, 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()
А вот ссылка на страница, которую я преобразовал в x html, используя tagoup, который я передаю в командной строке arg: https://pastebin.com/JU8cDJJ5
Любая помощь будет высоко ценится. Спасибо!