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机时,还会为搜索引擎系统增加负荷。而想要控制这种重复性下载问题,就要考虑下载所依据的超    链接,只要能够控制待下载的URL不重复,基本可以解决同一个网页重复下载的问题。
  对于已经抓取过的链接,进行持久化,并且在启动的时候加载进入去重队列,是一个比较强的需求。 
  它主要应对爬虫故障重跑,不需要重跑所有链接

如何确定去重强度?
  根据爬取周期确定使用去重强度 
  抓取周期在一个小时内,不需要对已经抓取的链接做持久化 
  抓取周期在一天内(或抓取的数据总量30w以下),需要对抓取链接做一个相对简单的持久化 
  抓取周期在一天以上,需要对抓取链接做相对专业的持久化

原文地址:https://www.cnblogs.com/itman123/p/11597158.html

时间: 2024-10-16 09:14:52

Python爬虫工程师必学——App数据抓取实战的相关文章

Python 爬虫工程师必学 App数据抓取实战

第1章 课程介绍介绍课程目标.通过课程能学习到的内容.学会这些技能能做什么,对公司业务有哪些帮助,对个人有哪些帮助.介绍目前app数据抓取有哪些困难,面临的挑战,本实战课程会利用哪些工具来解决这些问题,以及本实战课程的特点 ... 1-1 python爬虫工程师必备技能--App数据抓取实战课程导学第2章 windows下搭建开发环境介绍项目开发需要安装的开发软件,讲解了安卓模拟器对比以及夜神安卓模拟器安装.介绍.简单使用和Genymotion安卓模拟器简单分析 介绍App应用抓包工具对比以及f

python爬虫----(6. scrapy框架,抓取亚马逊数据)

利用xpath()分析抓取数据还是比较简单的,只是网址的跳转和递归等比较麻烦.耽误了好久,还是豆瓣好呀,URL那么的规范.唉,亚马逊URL乱七八糟的.... 可能对url理解还不够. amazon ├── amazon │   ├── __init__.py │   ├── __init__.pyc │   ├── items.py │   ├── items.pyc │   ├── msic │   │   ├── __init__.py │   │   └── pad_urls.py │  

第四章爬虫进阶之动态网页数据抓取

动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面.因为传统的在传输数据格式方面,使用的是XML语法.因此叫做AJAX,其实现在数据交互基本上都是使用JSON.使用AJAX加载的数据,即使使用了JS,将数

[Python爬虫] 之九:Selenium +phantomjs抓取活动行中会议活动(单线程抓取)

思路是这样的,给一系列关键字:互联网电视:智能电视:数字:影音:家庭娱乐:节目:视听:版权:数据等.在活动行网站搜索页(http://www.huodongxing.com/search?city=%E5%85%A8%E5%9B%BD&pi=1)的文本输入框中分别输入每个关键字,在搜索结果中抓取需要的数据. 首先通过Selenium+IE驱动得到每个关键字搜索结果的url(首页,因为以后各个页的url就是索引不一样)和总页数,保存的列表里面.然后再循环列表,用Selenium +phantomj

Python爬虫新手教程:手机APP数据抓取 pyspider

1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程.今天教程中增加了图片的处理,你可以重点学习一下. 2. 手机APP数据----页面分析 咱要爬取的网站是 http://www.liqucn.com/rj/new/ 这个网站我看了一下,有大概20000页,每页数据是9个,数据量大概在180000左右,可以抓取下来,后面做数据分析使用,也可以练习优

Python爬虫入门教程 29-100 手机APP数据抓取 pyspider

1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程.今天教程中增加了图片的处理,你可以重点学习一下. 2. 手机APP数据----页面分析 咱要爬取的网站是 http://www.liqucn.com/rj/new/ 这个网站我看了一下,有大概20000页,每页数据是9个,数据量大概在180000左右,可以抓取下来,后面做数据分析使用,也可以练习优

[Python爬虫] 之十三:Selenium +phantomjs抓取活动树会议活动数据

抓取活动树网站中会议活动数据(http://www.huodongshu.com/html/index.html) 具体的思路是[Python爬虫] 之十一中抓取活动行网站的类似,都是用多线程来抓取,但是由于活动树网站 ,每个关键字搜索页的ur是固定,比如搜索“数字”结果有470个结果,没页10条记录,第二页的url和第一页的 url是一样的. 因此针对每个关键字用一个线程进行搜索. 具体代码如下: # coding=utf-8import osimport refrom selenium im

[Python爬虫] 之三:Selenium 调用IEDriverServer 抓取数据

接着上一遍,在用Selenium+phantomjs 抓取数据过程中发现,有时候抓取不到,所以又测试了用Selenium+浏览器驱动的方式:具体代码如下: #coding=utf-8import osimport refrom selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport timefrom selenium.webdriver.common.action_chains import A

Python爬虫入门教程 17-100 博客抓取数据

写在前面 写了一段时间的博客了,忽然间忘记了,其实博客频道的博客也是可以抓取的,所以我干了..... 其实这事情挺简单的,打开CSDN博客首页,他不是有个最新文章么,这个里面都是最新发布的文章. 打开F12抓取一下数据API,很容易就获取到了他的接口 提取链接长成这个样子 https://blog.csdn.net/api/articles?type=more&category=newarticles&shown_offset=1540381234000000 发现博客最新文章是一个瀑布流