爬虫技术和爬虫需求现状和展望

2023-10-27

技术社区中流行的爬虫技术相当多,很多人喜欢基于Python的,也有人喜欢用C#,很多人由于系统集成开发和跨平台的需要倾向于java,我就属于后者。

其实就原理来说,爬虫组件都是差不多的,无头浏览器,最能够说明爬虫的特性,它们被设计创造出来,大部分情况是用于自动化测试的。

基于socket的httpclient功能简单,性能强大,特别是在高并发的情况下,而被大家所青睐,特别是搜索引擎中,如果抓取静态页面,httpclient非常适合。

当遇到ajax加载的信息,就需要javascript效果渲染的时候,httpclient就不行了,htmlunit是基于httpclient加入Rhino引擎实现js渲染的无头浏览器,当然包含了httpclient的特性,然而,由于内存泄露的问题,高并发的状态下,并不能很稳定的工作,内存消耗随着程序的运行而不断增大,直到达到jvm分配的上限而崩溃。很多时候,你只能做个权衡,每个webclient使用若干次后就把它回收,然后重新启动一个,这非常影响性能。Rhino对于javascript的支持并不好,实际使用中,会发现各种Exception,很多时候会导致无法渲染出想要的结果,这个htmlunit的又一大缺陷。随着版本的更新,能够渐次解决一些问题,但是好的程序员,还是应该自己读源码来尝试解决问题。

Phantomjs相比于htmlunit,对于js的支持更接近真实的浏览器,但是并发性能差,通过java的exec调用系统命令来启动,更加降低了性能。

此外主流的浏览器都提供了相应的抓取支持,selenium可谓是一个集大成者,包含了上述的所有组件,以WebDriver的形式,适配各种爬虫组件,你可以用它操控浏览器自动抓取,当然,并发和性能的问题依然存在。

爬虫开发的主要问题是性能和反封锁。很多时候,采用高并发高频率抓取数据是可行的,前提是目标站点没有采用任何反爬措施(访问频率限制、防火墙、验证码……);更多时候,有价值的信息,一定伴随着严格的反爬措施,一旦ip被封,什么组件都没戏了。你不得不维护一个代理IP池来解决这个问题,当然,这也带来了代理ip稳定性和速度的问题,这些问题都是无法回避的问题,我们需要针对具体的情况,采用对应的措施,以最大限度的完成爬虫爬取任务。

目前,爬虫的需求呈爆炸式增长的趋势,这是当前各种互联网创新和大数据时代的新常态。火车和八爪鱼等团队看到了这一点,并率先开发了相对完备的爬虫产品,很多用户都在使用,但是更多的用户希望直接把爬虫抓取任务外包出去,因为他们不懂技术,工具的使用需要逾越技术的鸿沟,大部分用户并没有这个逾越鸿沟的打算。我相信像猪八戒这样的技术外包平台会活的越来越好,我也相信各个技术门类会不断聚集,形成相对独立的社区,P2P的社区平台将提供爬虫开发者和爬虫需求者更加通畅的交流渠道。

目前,淘宝等平台上出现很多爬虫服务商,如 https://item.taobao.com/item.htm?spm=a230r.1.14.132.3e23eabcdeEEkq&id=556922987865&ns=1&abbucket=13#detail,这种定制开发的服务,增加了服务商的成本,服务往往是一次性的,满足了一个用户的需求,然而具有相似需求的用户,却很难有机会找到这个服务商,这就是为什么我们需要爬虫信息交流的平台。

笔者有意建立这样的平台,不管是微博、微信公众号、文章,还是政府门户的信息公开,或者门户网站、新闻社区等媒体,或者其他领域如金融的数据,都可以在平台上找到,也很容易实现供应和需求者的相互匹配。

然而,对于这其中的法律问题,特别是知识产权问题,不甚明了,除了robots协议,很多数据网站都会另外声明其数据使用规范,同时,如大众点评等网站提供的API很难满足分析的需要,就形成了数据被独占而其价值得不到有效开发的不合理现象。

大数据时代,对大数据的分析应当成为一个行业,数据拥有者应该开放数据的分析接口,让数据的价值释放,而爬虫开发者,很多时候是数据分析者(最起码是个数据清洗和筛选者)。他们蒙上了一层神秘面纱,带着一丝黑客气息,法律应当给他们更大的生存空间,让这个有价值的行业创造更大的价值。

如果有个人大代表或者政协委员看到这篇文章,并且提案,就更好了。笔者懒得去搞那些国会游说的游戏


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫技术和爬虫需求现状和展望 的相关文章

随机推荐

  • 华为ensp模拟器--通过IKE动态协商方式建立IPSec隧道的实验(不对对等体存活进行检测)

    组网需求 如图1所示 在Router1和Router3之间建立一个安全隧道 对PC 1代表的子网 10 1 1 x 与PC2代表的子网 20 1 1 x 之间的数据流进行安全保护 安全协议采用ESP协议 加密算法采用DES 认证算法采用SH
  • 利用linux系统安装caffe_fastrcnn参考链接

    1 2 3 4 5
  • Code Llama系列教程之 微调 CodeLlama 34B 以进行聊天(打造自己的代码AI)

    虽然 Meta 的 Llama2 在 AI 领域引起了广泛关注 但 34b 模型却缺席了相当长一段时间 对于许多人来说 这个 34b 模型是运行本地 LLM 的理想选择 因为它与使用 4 位量化的单个 4090 GPU 兼容 我一直在热切地
  • TCP报文格局详解

    TCP和谈只定义了一种报文格局 建立 拆除连接 传输数据应用同样的报文 TCP报文格局 TCP报文段首部 20个字节 源端口和目标端口 各占2个字节 16比特的端标语加上32比特的IP地址 共同构成相当于传输层办事接见点的地址 即 插口 这
  • (十九)STM32——输入捕获

    目录 学习目标 成果展示 内容 获取 配置 代码 总结 学习目标 本节内容我们要介绍的是输入捕获 其实也和定时器那部分知识是有关系的 所谓输入捕获 通俗一点来讲 其实就是通过检测上升沿和下降沿来计算你的输入持续时间 具体怎么去检测和捕获呢
  • c++实现图的操作(最小生成树和最短路径)

    题目描述 1 图的深度优先搜索演示 要求 图采用邻接表存储结构 编程实现图的创建 图的深度优先搜索递归算法 2 图的广度优先搜索演示 要求 图采用邻接表存储结构 编程实现图的创建 图的深度优先搜索递归算法 3 求带权无向图的最小生成树问题
  • VueRouter4简介

    第十四节 VueRouter4 x简介 基本用法 路由懒加载 打包分析 动态路由 路由嵌套 相关Api 一 简介和基本用法 1 简介 官网地址 https next router vuejs org zh introduction html
  • 详解随机梯度下降法(Stochastic Gradient Descent,SGD)

    深度学习最常用的优化方法就是随机梯度下降法 但是随机梯度下降法在某些情况下会失效 这是为什么呢 带着这个问题我们接着往下看 一个经典的例子就是假设你现在在山上 为了以最快的速度下山 且视线良好 你可以看清自己的位置以及所处位置的坡度 那么沿
  • 递归的本质理解

    什么是递归 函数里面调用函数本身 这就是递归 public int factorial int n if n lt 1 return 1 return n factorial n 1 先有 递 再有 归 递 是将问题拆分成子问题来解决 子问
  • vue 高德地图 实时路况

    先放效果图 1 准备工作 路况信息只需要使用web端即可实现 2 代码部分 1 在 public index html中引入 2 在需要用到地图的页面中
  • c语言valotile关键字

    volatile 是一种类型修饰符 提醒编译器他后面所定义的变量随时都有可能改变 因此编译后的程序每次需要存储或读取这个变量的时候 都会直接从变量地址中 内存中 读取数据 如果没有volatile关键字 则编译器可能优化读取和存储 可能暂时
  • Python爬虫案例:爬取世界大学排行榜,做数据可视化

    前言 闲的一匹 高三生没多久就要高考了 还有四个月 也是快了 咱来看看世界大学的排行榜 采集一下 做个可视化 看看有没有你心仪的学校 嘿嘿 知识点 动态数据抓包 requests发送请求 结构化 非结构化数据解析 开发环境 python 3
  • CCF-CSP真题《202212-3 JPEG 解码》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看 CCF CSP真题附题解大全 试题编号 202212 3 试题名称 JPEG 解码 时间限制 1 0s 内存限制 512 0MB 问题描述 问题背景 四年一度的世界杯即将画上尾声 在本次的世界杯比
  • RT-Thread 中龙芯1C的网络lwip升级到2.1.0

    RT Thread 龙芯1C 智龙开发板 的网络lwip升级到2 1 0 1 硬件平台 智龙开发板V3 42 2 软件平台 RT Thread 4 0 0 其中LWIP 2 1 0 3 问题描述 一直使用 RT Thread 软件平台 配套
  • (史上最全总结)总体方差,样本方差,标准差,抽样方差,标准误差,均方误差,协方差 ...........

    文章目录 数学期望 color blue 数学期望 数学期望 总体和样本 color blue 总体和样本 总体和样本
  • arcgis for javascript TileLayer 自定义高德地图图层

    效果如图 一 创建自定义切片层 要创建自定义图块层 您必须调用BaseTileLayer类的createSubclass 方法 命名自定义层为TintLayer 由于这一层需要知道在哪里访问预定义的图块 我们将创建一个属性 应用程序将为图层
  • Android开发:登录/注册界面的编写

    目录 新建一个空项目 或Activity 在xml中绘制登录界面 关掉ActionBar 运行 最终效果图 后记 在实际开发中 几乎所有的APP都会涉及到用户注册 登录页面的制作 因此本文以Android Studio为开发环境 教大家编写
  • Springboot参数校验和异常处理

    Springboot参数校验和异常处理 参数校验 异常处理 参数校验 pom xml文件添加依赖
  • 2022年4月8日字节跳动机抖音APP推荐实习面试题

    1 AUC是什么 如何计算AUC AUC 随机取一个正样本和一个负样本 正样本的预测值大于负样本预测值的概率 AUC计算的关键是找到所有正样本预测值大于负样本预测值的正负样本对 首先 需要将样本按照预测值进行从小到大排序 最小score对应
  • 爬虫技术和爬虫需求现状和展望

    技术社区中流行的爬虫技术相当多 很多人喜欢基于Python的 也有人喜欢用C 很多人由于系统集成开发和跨平台的需要倾向于java 我就属于后者 其实就原理来说 爬虫组件都是差不多的 无头浏览器 最能够说明爬虫的特性 它们被设计创造出来 大部