使用客户端脚本从远程网站获取所有 HTML
Grab all HTML from a remote website using client-side script
我想创建一个网络应用程序来组织和分析来自另一个网站的信息。另一个网站没有API,所以我想从中获取所有HTML(在允许其脚本运行之后),并让我可以使用jquery为我的Web应用程序进行挑选。
我意识到PHP或其他服务器端语言是这个问题的真正答案,但我只知道前端的东西,只想做一些快速而肮脏的东西。除了我,没有人使用它。
我现在能想到的唯一实现这一目标的方法是使用隐藏的 iframe。还有什么(相对)比这个解决方案更优雅的吗?
您可以使用 YQL 休息调用轻松完成此操作。
请参阅此处的示例:https://developer.yahoo.com/yql/guide/yql-select-xpath.html
基本上,您只需要对雅虎的YQL服务器进行一些AJAX调用,它将返回响应,并在其中找到您查询的页面的HTML。
游乐场链接 - 如您所见,REST 查询位于页面底部。
更新-
谷歌"使用 PhantomJS 抓取网页",您将获得报废和解析页面并获得最终结果所需的确切内容。
事实上,隐藏的iframe可能无法工作,因为大多数浏览器不允许一个窗口的javascript在另一个窗口(例如iframe)的上下文中运行。
为什么不使用jQuery.get()获取HTML?
您无法从 IFrame 访问 DOM,因为它违反了跨源资源共享 (CORS) 规则。使用 IFrames,您需要从相同的主机(即至少 foo.com 和 bar.foo.com)提供两个帧 - 如果它们在任何方面都不同,则必须显式设置 document.domain
属性。就像这样,一个页面不能只包含你的银行/Facebook/其他敏感信息网站的IFrame,然后简单地窃取内容。查看 MDN 了解更多信息
如果你真的想从网站中提升HTML内容,那么使用JavaScript并不是一个最佳解决方案,因为跨源策略的存在是有充分理由的。
简单答案:否
现代浏览器不会让你这样做,否则它们是不安全的。
有关请求网页的方法的详细信息,请参阅此问题,但所有方法都要求您位于同一域中。
我的建议:
选项A:周日休息(像今天一样!)并学习一些基本的服务器知识。你已经知道了JavaScript,你可以在一天内学会用nodejs构建一个简单的Web服务器!
选项B:你真的不想碰后端的东西。请考虑将您的应用构建为 Chrome 应用。在此方法中,您可以礼貌地要求用户从远程位置获取内容。
你的目标是使用 JavaScript 进行"屏幕抓取"吗?
如果是这样,网站将无法运行(出于安全原因),但您可能仍然可以选择。
您可以通过将Javascript粘贴到书签中来创建"书签",前面加上javascript:
。然后,您只需打开网页,然后单击书签,即可执行代码。
我建议先将所有代码写在一个实际的JavaScript文件中,然后将其粘贴到书签中。举个例子:
javascript:
alert("hello");
- 如何使用由Javascript填充的Python从网站获取数据
- 从外部网站获取JSON数据
- 如何从网站获取数据,然后显示在英特尔 XDK 页面中
- 从外部网站获取谷歌地图数据
- 从安全网站获取特定数据
- 如何从网站获取所有图像并用base64编码替换它们
- 从网站获取特定文本 (html)
- 如何从动态网站获取完整的网址
- 从网站获取 jquery 动态值
- 从网站获取数据
- 使用 XMLHttpRequest 从另一个网站获取单词
- 使用 javascript 从网站获取所有出站链接
- 从填充了 JavaScript 的网站获取内容
- 如何从另一个网站获取访问者数量
- 如何从其他网站获取信息
- 如何使用 jsPDF 和 HTML2Canvas 从网站获取多页 PDF
- 如何从图像托管网站获取相册图像并将其自动显示在网站中
- 使用客户端脚本从远程网站获取所有 HTML
- 如何从其他网站获取内容
- 如何使用javascript从网站获取数据表