htmlunit抓取动态网页(现实世界中的问题:我的应用托管在Heroku上)
优采云 发布时间: 2022-04-11 05:29htmlunit抓取动态网页(现实世界中的问题:我的应用托管在Heroku上)
现实世界的问题:
我的应用程序托管在 Heroku 上,据我所知,Heroku 无法提供将无头(无 GUI)浏览器(例如 HTMLUnit)作为 Googlebot 运行的解决方案
生成 HTML 快照以索引我的 AJAX 内容。
我建议的解决方案:
如果您还没有,我建议您阅读 Google 的
“使 AJAX 应用程序可抓取
规格齐全”。
想象一下我有:
注意:Hash Bang (#!) 是 google
规范的一部分。
我想构建一个简单的“托管在 Google App Engine (GAE) 上”
Web 服务”,即:
接受 URL 参数,例如 ://#!tab=TabA&subtab=SubTab3 (URL 参数应该是 URLEncoded) 运行 HTMLUnit 到 #!tab=TabA&subtab=SubTab3 以在服务器上打开和运行客户端 JavaScript。一切完成后(或大约 45 秒后),HTMLUnit 返回到 DOM。返回的内容可以通过 JSON/JSONP 发回,或者将 URL 返回到生成并存储在 google 应用引擎服务器上的文件(用于基于文件的“缓存”结果)......这里欢迎提出建议。如果返回文件的 URL,则可以使用 CURL 获取源代码(也称为 HTML 快照)。
我的应用程序需要管理对...的调用,基本上:
捕获对 Googlebots %26subtab=SubTab3 的调用(googlebot 抓取工具会转义某些字符,例如 %26=&)。从后端向 ://#!tab=TabA&subtab=SubTab3 发送请求(URL 参数应为 URLEncoded),以将返回的 HTML 快照呈现到前端。谷歌索引内容,我们很高兴!
我没有使用 Google App Engine 或 Java 或 HTMLUnit 的经验。
我也许能弄清楚……如果可以的话,我会发布我的结果。
否则,我认为对于某人来说这是一个非常好的机会来写一个踢屁股的博客 文章 概述一个关于新手如何构建这样一个 Web 服务的分步指南。
这将向更多人介绍出色的(免费)Google App
引擎。毫无疑问,这也将鼓励更多地采用 Google 的可抓取 AJAX 内容规范……我们都可以从中受益!
随着 Google 的规范获得更多接受,设置无头浏览器的“障碍”将离开许多
开发者谷歌寻找答案!立即获得名望与荣耀的答案!(编辑:至少我会赞美你)。
@_chrisjacob 如果您想讨论解决方案,请在 Twitter 上联系我。