bet*_*eta 5 python sqlite web-scraping
我想定期(例如每小时)抓取一些特定的网页。我想用python做。抓取的结果应插入到SQLite表中。新信息将被删除,但是“旧”信息将再次被删除,因为python脚本将每小时运行一次。
更准确地说,我想抓取一个体育比赛结果页面,随着比赛的进行,越来越多的比赛结果发布在同一页面上。因此,对于每个新的抓取,我只需要将新结果输入到SQLite表中,因为较早的结果已经在一小时(甚至更早)之前就被抓取了(并插入到表中)。
当第二次被抓取时,我也不想插入相同的结果两次。因此,应该有某种机制来检查是否已刮取一个结果。可以在SQL级别完成吗?因此,我刮了整个页面,INSERT为每个结果创建一个语句,但是只有那些INSERT成功执行的语句才在数据库中不存在。我在想类似UNIQUE关键字之类的东西。
还是我对性能的考虑太多了,应该在DROP TABLE每次开始抓取然后再次从头开始抓取所有内容之前,通过每次操作来解决此问题?我不会谈论太多数据。一年大约有100场比赛的记录(=比赛)。
基本上,我只会对某种最佳实践方法感兴趣。
看起来如果数据不存在就想插入?也许是这样的:
您可以发出 2 个单独的 sql 语句 SELECT 然后 INSERT/UPDATE
或者你可以设置唯一,我相信 sqllite 会提出IntegrityError
try:
# your insert here
pass
except sqlite.IntegrityError:
# data is duplicate insert
pass
Run Code Online (Sandbox Code Playgroud)