我刮了一些网站,并将html信息存储在sqlite数据库中。现在,我要提取并存储电子邮件地址。我能够成功提取并打印ID和电子邮件。
一切正常运行,打印时数据看起来很好。但是,由于某种原因,它没有保存到sqlite数据库中。我不知道为什么。该代码运行没有错误,但是数据库中没有任何列的数据。但是,“电子邮件”表已创建,但是没有数据。
我已经确保我的sql语句可以正常运行,并且在直接运行代码时可以正常工作。我要保存的信息在python中被归类为str对象。
这是我运行代码时(下面的链接)打印的示例。
PYTHON
import sqlite3
import re
conn = sqlite3.connect('spider.sqlite')
cur = conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS Emails \
(id INTEGER PRIMARY KEY AUTOINCREMENT, url TEXT, email TEXT, test TEXT)')
cur.execute('SELECT id, html, url FROM Pages \
WHERE html is NOT NULL and email is NULL ORDER BY RANDOM()')
#print('This is x: ', x)#for testing purposes
test = 'test'
print(test)
for row in cur.fetchall():
id = row[0]
html = row[1]
url = row[2]
email = re.findall(b'[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+', \
html)
#print(email)#testing purposes
print(email)
for each in email:
each = str(each)
print(url)
print(type(each))
print(type(url))
print('for each: ', url, each)
conn.execute('INSERT OR IGNORE INTO Emails (url, email, test)\
VALUES ( ?, ? , "test" )', ( url, each, ) )
conn.commit
我想将url和电子邮件文本信息保存在数据库中。在“为每个”之后的打印输出示例中显示出来
答案 0 :(得分:0)
您需要sql吗?尝试simpledb,我也编写了自己的数据库,该数据库也支持从多个线程读取数据,我认为您必须在输入数据后将save()数据推送到sql数据库中