English | 简体中文 | 中国镜像 |
💖 PulsarRPA - 您的大规模自动化解决方案! 💖
PulsarRPA 是一款高性能、分布式、开源的机器人流程自动化(RPA)框架,专为轻松应对大规模 RPA 任务而设计,为浏览器自动化、网络内容理解和数据提取提供了全面解决方案。PulsarRPA 结合了高性能分布式 RPA 的优势,旨在解决在快速演变且日益复杂的网站环境中进行浏览器自动化以及抽取准确、全面网络数据所固有的挑战。
val document = session.harvest("https://www.eeo.com.cn/2024/0330/648712.shtml")
println(document.contentTitle)
println(document.textContent)
示例代码: kotlin.
在这个案例中,我们使用流行的 biolerpipe 技术来自动提取新闻网页。在 PulsarRPAPro 中,我们支持更加智能的数据提取技术,来自动提取各种各样的网页,譬如商品详情页。
Kotlin:
fun main() = PulsarContexts.createSession().scrapeOutPages(
"https://www.amazon.com/", "-outLink a[href~=/dp/]", listOf("#title", "#acrCustomerReviewText"))
上面的代码从一组产品页面中抓取由 css 选择器 #title 和 #acrCustomerReviewText 指定的字段。 示例代码:kotlin, java.
Kotlin:
fun main() {
val context = PulsarContexts.create()
val parseHandler = { _: WebPage, document: FeaturedDocument ->
// 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()
}
Kotlin:
val options = session.options(args)
val event = options.event.browseEventHandlers
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.
在很多情况下,您可能仍然需要使用基于规则的数据提取技术。X-SQL 被设计来描述和管理最复杂的数据提取规则。
select
dom_first_text(dom, '#productTitle') as title,
dom_first_text(dom, '#bylineInfo') as brand,
dom_first_text(dom, '#price tr td:matches(^Price) ~ td, #corePrice_desktop tr td:matches(^Price) ~ td') as price,
dom_first_text(dom, '#acrCustomerReviewText') as ratings,
str_first_float(dom_first_text(dom, '#reviewsMedley .AverageCustomerReviews span:contains(out of)'), 0.0) as score
from load_and_select('https://www.amazon.com/dp/B0C1H26C46 -i 1s -njr 3', 'body');
示例代码:
PulsarRPA 是大规模采集 Web 数据的终极开源方案,可满足几乎所有规模和性质的网络数据采集需要。
大规模提取 Web 数据非常困难。网站经常变化并且变得越来越复杂,这意味着收集的网络数据通常不准确或不完整,PulsarRPA 开发了一系列尖端技术来解决这些问题。
为应对上述挑战,PulsarRPA 集成了多项创新技术,确保高效、精准、可扩展的网页数据提取:
综上所述,PulsarRPA 凭借其网页内容理解、智能抓取、先进 DOM 解析、分布式处理及开源特性,成为大规模网页数据提取首选的开源解决方案。其独特的技术组合使用户能够有效应对与大规模提取宝贵网页数据相关的复杂性和挑战,最终推动更明智的决策制定和竞争优势。
我们发布了一些最大型电商网站的全站数据采集的完整解决方案,这些解决方案满足最高标准的性能、质量和成本要求,他们将永久免费并开放源代码,例如:
要释放 PulsarRPA 的全部潜能并应对最复杂的数据抓取任务,对其核心概念的扎实理解至关重要。通过掌握这些基本原理,您将能够使用 PulsarRPA 作为从网络中提取有价值信息的强大工具。
让我们深入探讨构成您使用 PulsarRPA 进行数据抓取之旅基础的关键概念:
我们发布了一个基于 PulsarRPA 的独立可执行 jar,它包括:
下载 PulsarRPAPro 并使用以下命令行探索其能力:
java -jar exotic-standalone.jar
要利用 PulsarRPA 的强大功能,最简单的方法是将其作为库添加到您的项目中。
使用 Maven 时,可以在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>ai.platon.pulsar</groupId>
<artifactId>pulsar-all</artifactId>
<version>1.12.9</version>
</dependency>
使用 Gradle 时,可以在 build.gradle
文件中添加以下依赖:
implementation("ai.platon.pulsar:pulsar-all:1.12.9")
也可以从 Github 克隆模板项目,包括 kotlin, java-11, java-17。
您还可以基于我们的商业级开源项目启动自己的大规模网络爬虫项目: PulsarRPAPro, Exotic-amazon。
点击 基本用法 查看详情。
当 PulsarRPA 作为 REST 服务运行时,X-SQL 可用于随时随地抓取网页或直接查询 Web 数据,无需打开 IDE。
git clone https://github.com/platonai/pulsar.git
cd pulsar && bin/build-run.sh
对于国内开发者,我们强烈建议您按照 这个 指导来加速构建。
如果未启动,则启动 pulsar 服务器:
bin/pulsar
在另一个终端窗口中抓取网页:
bin/scrape.sh
该 bash 脚本非常简单,只需使用 curl 发送 X-SQL:
curl -X POST --location "http://localhost:8182/api/x/e" -H "Content-Type: text/plain" -d "
select
dom_base_uri(dom) as url,
dom_first_text(dom, '#productTitle') as title,
dom_first_slim_html(dom, 'img:expr(width > 400)') as img
from load_and_select('https://www.amazon.com/dp/B0C1H26C46', 'body');
"
示例代码可以在 这里 找到。
点击 X-SQL 查看有关X-SQL的详细介绍和功能描述。
我们提供了一个循序渐进的示例课程,帮助您逐步了解和掌握 PulsarRPA 的使用:
PulsarRPA 精心设计了日志和指标子系统,以记录系统中发生的每一个事件。通过 PulsarRPA 的日志系统,您可以轻松地了解系统中发生的每一件事情, 判断系统运行是否健康,以及成功获取了多少页面、重试了多少页面、使用了多少代理 IP 等信息。
通过观察几个简单的符号,您可以快速了解整个系统的状态:💯 💔 🗙 ⚡ 💿 🔃 🤺。以下是一组典型的页面加载日志。要了解如何阅读日志, 请查看 日志格式,以便快速掌握整个系统的状态。
2022-09-24 11:46:26.045 INFO [-worker-14] a.p.p.c.c.L.Task - 3313. 💯 ⚡ U for N got 200 580.92 KiB in 1m14.277s, fc:1 | 75/284/96/277/6554 | 106.32.12.75 | 3xBpaR2 | https://www.walmart.com/ip/Restored-iPhone-7-32GB-Black-T-Mobile-Refurbished/329207863 -expires PT24H -ignoreFailure -itemExpires PT1M -outLinkSelector a[href~=/ip/] -parse -requireSize 300000
2022-09-24 11:46:09.190 INFO [-worker-32] a.p.p.c.c.L.Task - 3738. 💯 💿 U got 200 452.91 KiB in 55.286s, last fetched 9h32m50s ago, fc:1 | 49/171/82/238/6172 | 121.205.220.179 | https://www.walmart.com/ip/Boost-Mobile-Apple-iPhone-SE-2-Cell-Phone-Black-64GB-Prepaid-Smartphone/490934488 -expires PT24H -ignoreFailure -itemExpires PT1M -outLinkSelector a[href~=/ip/] -parse -requireSize 300000
2022-09-24 11:46:28.567 INFO [-worker-17] a.p.p.c.c.L.Task - 2269. 💯 🔃 U for SC got 200 565.07 KiB <- 543.41 KiB in 1m22.767s, last fetched 16m58s ago, fc:6 | 58/230/98/295/6272 | 27.158.125.76 | 9uwu602 | https://www.walmart.com/ip/Straight-Talk-Apple-iPhone-11-64GB-Purple-Prepaid-Smartphone/356345388?variantFieldId=actual_color -expires PT24H -ignoreFailure -itemExpires PT1M -outLinkSelector a[href~=/ip/] -parse -requireSize 300000
2022-09-24 11:47:18.390 INFO [r-worker-8] a.p.p.c.c.L.Task - 3732. 💔 ⚡ U for N got 1601 0 <- 0 in 32.201s, fc:1/1 Retry(1601) rsp: CRAWL, rrs: EMPTY_0B | 2zYxg52 | https://www.walmart.com/ip/Apple-iPhone-7-256GB-Jet-Black-AT-T-Locked-Smartphone-Grade-B-Used/182353175?variantFieldId=actual_color -expires PT24H -ignoreFailure -itemExpires PT1M -outLinkSelector a[href~=/ip/] -parse -requireSize 300000
2022-09-24 11:47:13.860 INFO [-worker-60] a.p.p.c.c.L.Task - 2828. 🗙 🗙 U for SC got 200 0 <- 348.31 KiB <- 684.75 KiB in 0s, last fetched 18m55s ago, fc:2 | 34/130/52/181/5747 | 60.184.124.232 | 11zTa0r2 | https://www.walmart.com/ip/Walmart-Family-Mobile-Apple-iPhone-11-64GB-Black-Prepaid-Smartphone/209201965?athbdg=L1200 -expires PT24H -ignoreFailure -itemExpires PT1M -outLinkSelector a[href~=/ip/] -parse -requireSize 300000
PulsarRPA 已在 Ubuntu 18.04、Ubuntu 20.04、Windows 7、Windows 11、WSL 上进行了测试,任何其他满足要求的操作系统也应该可以正常工作。
如果您对 PulsarRPA 的高级主题感兴趣,可以查看 advanced topics 以获取以下问题的答案:
PulsarRPA 在 “主要特性” 部分中提到的特性都得到了良好的支持,而其他解决方案可能不支持或者支持不好。您可以点击 solution comparison 查看以下问题的答案:
如果您对 PulsarRPA 的技术细节感兴趣,可以查看 technical details 以获取以下问题的答案: