python抓取网页数据(Python爬虫工程师必学App数据抓取实战爬虫分为几)

优采云 发布时间: 2021-12-10 10:01

  python抓取网页数据(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)。一个比较简单的持久性爬取链接周期是一天以上,需要比较专业的持久性爬取链接。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线