【发布时间】:2021-07-26 00:17:54
【问题描述】:
使用 Selenium 抓取后(Test1 的 20 个名称列表和 Test2 的 20 个名称列表),我想将这些保存在数据库中:在一个名为“name”的垂直列中。所以我想保存 40 个不同的行,都在同一个名称列中,所以有 40 个不同的名称。刮擦发生正确。他刮掉了所有 40 个名字
插入数据库时出现问题:只保存了几个名字(例如只有5、6、7个名字),但都被定期刮掉了。怎么解决?我应该使用追加吗?如果是这样怎么办?我应该对我的代码进行什么更改?显然也像我一样在控制台中打印结果
你能告诉我我在输入数据库时哪里出错了吗?谢谢
#Test 1
driver.minimize_window()
driver.get("link")
for Test1 in driver.find_elements(By.CSS_SELECTOR, "a[href^='/xxxx'][class^='xxxx']"):
Test1_text = Test1.text
print(Test1_text)
driver.close
#Test 2
driver.minimize_window()
driver.get("link")
for Test2 in driver.find_elements(By.CSS_SELECTOR, "a[href^='/xxxx'][class^='xxxx']"):
Test2_text = Test2.text
print(Test2_text)
driver.close
# INSERT IN DATABASE
con = sqlite3.connect('/home/blablabla/Desktop/Database.db')
cursor = con.cursor()
Values = ((Test1_text,), (Test2_text,))
sqlite_insert_query = 'INSERT INTO NewTest (Name) VALUES (?);'
count = cursor.executemany(sqlite_insert_query, Values)
con.commit()
print(" ")
print("Record inserted successfully ", cursor.rowcount)
records_added_Risultati = records_added_Risultati + 1
cursor.close()
【问题讨论】:
-
当你说Test1_text = Test1.text时,你失去了前面的值。
-
@Jeremy Kahan 是的。我这样做是因为否则我在数据库中有问题,因为保存的数据的名称并没有出现在数据库中,而是写有 selenium34803948 的长文本(类似的东西,我记不太清了)。您能帮我将 for 的整个列表正确保存在数据库中吗?只保存了几个名字。
-
哦,我明白你为什么需要 ,text,我的意思是第一个条目的 Test1.text,比如说,当你开始写入数据库时,它不再存在。有两种方式可以去这里。 1. 将值存储在数组中并稍后添加(您的“追加想法”)或 2. 将它们写入数据库。
标签: python python-3.x sqlite selenium selenium-webdriver