如何将Beautiful Soup输出保存到我​​的SQLite数据库中?

时间:2018-04-30 17:55:36

标签: python html sqlite beautifulsoup

我有一个基本的网页正在运行,我已经在网上刮了一周的温度。页面上的输出在网页上显示完美。我现在想将这些输入到我的SQLite3数据库中。我试过找一些教程但找不到任何明确的教程。有人能引导我走正确的道路吗?

提前致谢。

def weather_():
page = requests.get("https://www.bbc.co.uk/weather/0/2643743")
soup = BeautifulSoup(page.content, 'html.parser')
today = soup.find('div',{'data-component-id' : 'forecast'})
temp = today.find(class_ = 'wr-day-temperature')
low_temp = (temp.get_text())
return low_temp

2 个答案:

答案 0 :(得分:1)

我知道这个问题已经有了一个可以接受的答案,但是我只想提一下,你应该总是使用查询参数而不是字符串格式来创建带变量的SQL语句。所以而不是:

curs.execute("INSERT INTO your_table_name low_temp='{}'".format(low_temp))

您应该使用:

curs.execute("INSERT INTO your_table_name low_temp=?", (low_temp,))

documentation确认这是要走的路:

  

通常,您的SQL操作需要使用Python中的值   变量。您不应该使用Python的字符串汇编查询   因为这样做是不安全的;它使你的程序   容易受到SQL注入攻击(请参阅https://xkcd.com/327/)   什么可能出错的幽默例子。)

我意识到,对于这个小例子程序,它不太可能有任何区别,但最好养成良好的习惯。

答案 1 :(得分:0)

如果您只想将low_temp存储在数据库中,请执行简单的SQL插入

import sqlite3

conn = sqlite3.connect('your_database.sqlite3', check_same_thread=False)

curs = conn.cursor()
curs.execute("INSERT INTO your_table_name low_temp='{}'".format(low_temp))
conn.commit()

我建议你阅读一些documentation