网络数据管理的应用场景,核心难题和解决方案

互联网是世界上最大的数据库,越来越多的个人和组织日益倚重互联网数据来学习和决策。典型的应用包括价格情报、品牌舆情、市场调查、零售选品、智能获客、政务舆情、背景调查等等。

采集、分析和融合非隐私公开数据有利于行业发展、数据要素流通和技术进步。

根据 Opimas Research 报告,全球网页挖掘和融合的市场规模大约每年 100 亿美金,其中外部采购支出大约每年 20 亿美金,并且以每年超过 70% 的速度增长。更进一步,以知识图谱为核心的认知智能是更为广阔的市场。

从互联网数据中获得数据和见解是一项基础性的需求,互联网是世界上最大的数据库,但从互联网获得数据从未容易过。

网络数据管理的应用场景

从行业应用场景角度看:

  1. 认知智能高精度结构化全体网页,为认知智能提供基础知识图谱。

  2. 情感分析:从社交媒体平台、新闻和评论等数据源提取信息,以量化和解读公司、品牌、产品的声誉,跟踪竞争对手,或者收集政务舆情,及时了解任何可能重要的突发事件

  3. 价格情报:电商网站更改价格越来越频繁,竞争对手定价和库存监控变得越来越重要。监控竞争对手的定价有助于企业调整自身产品的市价率。品牌商也通过渠道巡检来监控渠道定价,以确保分销商遵守定价政策

  4. 供应链管理:使用网络数据进行需求预测、销量预测,以帮助管理物流、采购、库存等。譬如帮助电商对产品销量进行预测,从而制定补货计划,优化库存;航空公司监控市场并调整其定价和航线;而食品公司则通过跟踪农产品原产地气候变化,来预测农产品质量并选择供应商

  5. 市场营销:收集有关竞争对手的信息、识别销售线;从新闻、社交媒体和评论中收集信息并进行分析,跟踪需要客服和支持的问题,并进一步制定产品开发和市场进入策略。网络数据还可用于潜在客户生成,识别可能成为特定服务或产品目标的个人或公司

  6. 经济与投资研究:从网络数据中生成可分析数据,并通过API 直接交付到投资公司模型,可以近乎实时地推动投资决策。投资公司使用测量移动位置、交通模式、天气、卫星图像、财务报表、宏观经济指标等数据集来帮助制定投资决策。市场数据汇总也被广泛应用于直接投资决策。对一些缺乏行业数据的新兴行业,从网络中获得自身数据指标可能是获得影响未来规划的关键见解的唯一机会

  7. 风险管理:使用网络数据增强风险管理措施,如对员工、供应商、交易对手进行背景调查以控制风险,或者用于监控地缘政治风险和检测欺诈

从技术角度看:

  1. 每日采集百万量级电商页面做市场调查和竞品分析

  2. 采集数千个网站并降低规则失效率

  3. 采集整个互联网并建立搜索引擎、信息流产品或者知识图谱

  4. 开发数据采集器,或者架设自己的数据采集公有云

网络数据管理的核心难题

目前大家常用的主流的数据采集软件,包括 selenium, playwright, puppeteer 等,不是为数据采集开发的,不适合数据采集;而大家熟知的 scrapy, requests 等,已经越来越不适应现代网页了。

  1. 现在主流网站常用的反爬手段基本都用了,譬如Cookie跟踪,IP跟踪,访问频率限制,访问轨迹跟踪,CSS 混淆等等。

  2. 使用基本的 HTTP 协议采集,如 requests, scrapy, jsoup, nutch 等,会陷入无穷无尽的爬虫/反爬虫对抗中,得不偿失,并且未必能解决,譬如说采用了动态自定义字体的站点就不可能解决。

  3. 使用浏览器自动化工具如 selenium, playwright, puppeteer 等进行数据采集,会被检测出来并直接屏蔽。

  4. 使用 puppeteer-extra, apify/crawlee 这样的工具,虽然提供了 WebDriver 隐身特性,一定程度上缓解了这个问题,但仍然没有完全解决。

    1. 上述工具没有解决访问轨迹跟踪问题

    2. Headless 模式能够被检测出来。云端爬虫通常以 headless 模式运行,即使做了 WebDriver 隐身, headless 模式也能够被检测出来

    3. 其他爬虫对抗问题

即使解决完上述问题,也仅仅是入门而已。在稍稍正式一点的采集场景下,仍然面临诸多困难:

  1. 如何正确轮换IP?事实上,仅轮换IP是不够的,我们提出“隐私上下文轮换”

  2. 如何使用单台机器每天提取数千万数据点?

  3. 如何保证数据准确性?

  4. 如何保证调度准确性?

  5. 如何保证分布式系统弹性?

  6. 如何正确提取 CSS 混淆 的字段,它的 CSSPath/XPath/Regex 每个网页都不同,怎么解决?

  7. 如何采集数百个电商站点并避免爬虫失效?

  8. 如何降低总体拥有成本?

网络数据管理的解决方案

PulsarRPA国内镜像)为解决网络数据管理、多源异构数据融合、数据采集等问题,开发了一系列基础设施和前沿技术。类似 Playwright 这样的浏览器驱动,在 PulsarRPA 中仅仅只是一个不大的子系统,可见单单 Playwright 能够解决的问题极其有限。为了性能、稳定性、容错性等考虑,我们也不会使用 Playwright 作为浏览器驱动,而是基于 CDP 从头开发。

我们提供了大量顶级站点的采集示例,从入门到资深,包含各种采集模式,包括顶尖大站的全站采集代码、反爬天花板的站点的采集示例,你可以找一个代码示例改改就可以用于自己的项目:

我们的开源代码也包含 REST 服务、像数据库客户端一样的网页客户端等等,基于该网页客户端,你甚至可以稍稍完善一些用户体验就可以打造与最知名“采集器”相媲美的产品。

PulsarRPA 支持高质量的大规模数据采集和处理。PulsarRPA 开发了一系列基础设施和前沿技术,来保证即使是大规模数据采集场景,也能达到最高标准的性能、质量和总体拥有成本。

PulsarRPA 支持网络即数据库范式。PulsarRPA 像对待内部数据库一样对待外部网络,如果需要的数据不在本地存储中,或者现存版本不满足分析需要,则系统会从互联网上采集该数据的最新版本。我们还开发了 X-SQL 来直接查询互联网,并将网页转换成表格和图表。

PulsarRPA 支持浏览器渲染并将其作为数据采集的首要方法。将浏览器渲染作为数据采集的首要方法,我们在数据点规模、数据质量、人力成本和硬件成本之间实现了最佳平衡,并实现了最低的总体拥有成本。通过优化,如屏蔽不相关的资源文件,浏览器渲染的性能甚至可以与传统的单一资源采集方法相媲美。

PulsarRPA 支持 RPA 采集。PulsarRPA 包含一个 RPA 子系统,来实现网页交互:滚动、打字、屏幕捕获、鼠标拖放、点击等。该子系统和大家所熟知的 selenium, playwright, puppeteer 是类似的,但对所有行为进行了优化,譬如更真实的模拟操作,更好的执行性能,更好的并行性,更好的容错处理,等等。

PulsarRPA 支持退化的单一资源采集。PulsarRPA 的默认采集方式是通过浏览器渲染来采集完整的网页数据,如果您需要的数据可以通过单一接口获取,譬如可以通过某个 ajax 接口返回,也可以调用 PulsarRPA 的资源采集方法进行高速采集。

PulsarRPA 计划支持最前沿的信息提取技术。我们计划发布一个先进的人工智能,以显著的精度自动提取所有网页(譬如商品详情页)中的每一个字段,目前我们提供了一个预览版本国内镜像

代码示例

大多数 抓取尝试 可以从几乎一行代码开始:

fun main() = PulsarContexts.createSession().scrapeOutPages( "https://www.amazon.com/", "-outLink a[href~=/dp/]", listOf("#title", "#acrCustomerReviewText"))

上面的代码从一组产品页面中抓取由 css 选择器 #title 和 #acrCustomerReviewText 指定的字段。 示例代码可以在这里找到:kotlinjava,国内镜像:kotlinjava

大多数 生产环境 数据采集项目可以从以下代码片段开始:

fun main() {
    val context = PulsarContexts.create()

    val parseHandler = { _: WebPage, document: Document ->
        // use the document
        // ...
        // and then extract further hyperlinks
        context.submitAll(document.selectHyperlinks("a[href~=/dp/]"))
    }
    val urls = LinkExtractors.fromResource("seeds10.txt")
        .map { ParsableHyperlink("$it -refresh", parseHandler) }
    context.submitAll(urls).await()
}

示例代码可以在这里找到:kotlinjava,国内镜像:kotlinjava

最复杂的数据采集项目可以使用 RPA 模式:

最复杂的数据采集项目往往需要和网页进行复杂交互,为此我们提供了简洁强大的 API。以下是一个典型的 RPA 代码片段,它是从顶级电子商务网站收集数据所必需的:

val options = session.options(args)
val event = options.event.browseEvent
event.onBrowserLaunched.addLast { page, driver ->
    // warp up the browser to avoid being blocked by the website,
    // or choose the global settings, such as your location.
    warnUpBrowser(page, driver)
}
event.onWillFetch.addLast { page, driver ->
    // have to visit a referrer page before we can visit the desired page
    waitForReferrer(page, driver)
    // websites may prevent us from opening too many pages at a time, so we should open links one by one.
    waitForPreviousPage(page, driver)
}
event.onWillCheckDocumentState.addLast { page, driver ->
    // wait for a special fields to appear on the page
    driver.waitForSelector("body h1[itemprop=name]")
    // close the mask layer, it might be promotions, ads, or something else.
    driver.click(".mask-layer-close-button")
}
// visit the URL and trigger events
session.load(url, options)

示例代码可以在这里找到:kotlin国内镜像

而如果你在寻找采集电商网站的完整解决方案,我们也有提供:大规模数据采集的完整开源解决方案

小结

大规模处理 Web 数据非常困难。网站经常变化并且变得越来越复杂,这意味着收集的网络数据通常不准确或不完整,数据标准化和知识化面临更多难题。PulsarR 和 PlatonAI 开发了一系列尖端技术来解决网络数据管理、网络数据融合、网络数据采集等难题,为网络数据管理提供了全新的解决方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值