python抓取网页数据(Python爬虫工程师必学App数据抓取实战爬虫分为几)
优采云 发布时间: 2021-12-10 10:01python抓取网页数据(Python爬虫工程师必学App数据抓取实战爬虫分为几)
Python爬虫工程师必学App数据抓取实战
爬虫分为几个大方向,WEB网页数据抓取,APP数据抓取,软件系统数据抓取。主要讲解如何使用python实现App数据抓取
重复数据删除又称重复数据删除,是指在一组数字文件中查找并删除重复数据,只保存唯一的数据单元。重复数据删除可以有效避免资源浪费,因此重复数据删除必不可少
重复数据删除
重复数据删除可以从两个节点启动:一个是 URL 重复删除。即直接过滤掉重复的URL;另一种是从数据库中删除重复项。即利用数据库的一些特性过滤重复数据。
def process_spider_output(self, response, result, spider):
for r in result:
if isinstance(r, Request): #对结果进行分析,如果是url,继续下一步,否则跳过
key = self._get_key(r) #通过_get_key函数生成key
if key in self.db: #查看key是否在数据库中
logger.info("Ignoring already visited: %s" % r) #如果在数据库,就抛弃
if self.stats:
self.stats.inc_value(‘deltafetch/skipped‘, spider=spider)
continue
elif isinstance(r, (BaseItem, dict)): #对结果分析,如果是dict or item ,继续下一步
key = self._get_key(response.request)
self.db[key] = str(time.time()) #对url进行持久化操作
if self.stats:
self.stats.inc_value(‘deltafetch/stored‘, spider=spider)
yield r
def _get_key(self, request):
#key值的生成,要么是request.meta传过来,要么使用指纹算法生成
key = request.meta.get(‘deltafetch_key‘) or request_fingerprint(request)
return to_bytes(key)
URL重复数据删除
为什么需要 URL 重复数据删除?
在启动爬虫的过程中,我们不希望同一个网页被多次下载,因为重复下载不仅会浪费CPU时间,还会增加搜索引擎系统的负载。如果要控制这种重复下载的问题,就必须考虑下载所基于的超链接。只要要下载的网址不重复,基本上可以解决同一个网页重复下载的问题。
将爬取到的链接持久化,并在启动时加载到重复数据删除队列中,这是一个比较强烈的要求。
主要响应爬虫失败并重新运行,不需要重新运行所有链接
如何确定重复数据删除的强度?根据爬取周期确定使用去重强度。爬取周期在1小时以内,爬取的链接不需要持久化。爬取周期在1天以内(或爬取数据总量小于30w)。一个比较简单的持久性爬取链接周期是一天以上,需要比较专业的持久性爬取链接。