最近部署上海证券交易所的上市公司最新公告的数据采集发现通过日期搜索的方式可以做到历史数据爬取和日更数据爬取的通用。但是也会遇到一些问题。最主要的问题是:
虽然搜索结果是默认时间排序的。但是时间发现,在当天晚间会出现一些新的公告,但是并没有出现在第一页。如图所示:
因此我们需要准备两套方案:
#1. 具备列表页去重判断翻页的高频爬取
这个方案主要是满足于日常高频爬取,确保数据的时效性。因此在列表页要判断去重,并且只有在当前列表页有新数据的情况下才翻页。保证高频高效但不保证数据的完整性。
#2. 具备列表页去重但不判断翻页的兜底全量爬取
这个方案主要是满足于遗漏数据的补全,确保数据的完整性。因此这个方案的部署建议在当天凌晨爬取前一天的全量。
局限性
由于爬虫平台设计的局限性,无法为两套方案开发两个爬虫。主要局限性在于两个爬虫的去重队列是不同的。因此实时爬虫爬取完毕以后,数据补全爬虫无法共享实时爬虫的去重队列。因此只能将两套方案实现在一个爬虫中。
根据两个方案不同的启动时间,我们可以对比查询时间范围与当天时间是否相同来判断当前爬取的目的是实时爬取还是数据补全。例如:当startDate
和当天时间datetime.now()
相同,那么判断为实时爬取(去重并判断翻页);当两者不同时,即当天爬取历史数据,可以去重但不判断翻页(直接翻页,不判断当前列表是否有新数据)。

扫码联系船长