我在python中有一个web抓取程序,它抓取一个网站并将数据保存在数据库中。我只想在抓取程序完成时将新信息保存在数据库中。有没有技术/想法呢?我正在使用的操作系统是ubuntu。
答案 0 :(得分:1)
有时您可以查看上次修改日期的响应标头:
In [76]: url = 'http://python.org/ftp/python/3.2.2/Python-3.2.2.tar.bz2'
In [77]: import urllib
In [78]: d = urllib.urlopen(url)
In [79]: dict(d.info())
Out[79]:
{'accept-ranges': 'bytes',
'connection': 'close',
'content-length': '10743647',
'content-type': 'application/x-bzip2',
'date': 'Thu, 13 Mar 2014 14:55:47 GMT',
'etag': '"10c0008-a3ef5f-4ac0c2bd7f180"',
'last-modified': 'Sat, 03 Sep 2011 16:43:02 GMT',
'server': 'Apache/2.2.22 (Debian)'}
如果将last_modified日期存储在数据库中,则可以比较存储的日期与最新的last_modified日期,以确定是否应该再次下载数据。
但并非所有响应标头都包含last_modified
标头。
另一种选择是使用UNIQUE约束创建数据库表,然后使用INSERT IGNORE
命令插入数据,如果这样做会违反UNIQUE约束,则会跳过插入。有关如何执行此操作的详细信息取决于您使用的数据库。 (请注意,INSERT IGNORE是特定于MySQL的,sqlite3
它将是INSERT OR IGNORE
...)。