【问题标题】:Changing relative URLs of Javascript files更改 Javascript 文件的相对 URL
【发布时间】:2013-03-28 18:18:56
【问题描述】:

我正在像这样使用 Curl 进行屏幕抓取:

<?php
$url = "http://www.bbc.com/news/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
?> 

然后我在 HTML 页面上回显内容。问题是,当我查看控制台时,我看到 404 错误,因为分配给 javascript 文件的相对 URL。例如,如果 URL 是:somejavascriptfile.js 在加载页面时我的域名是这样添加的:http://mydomain/somejavascriptfile.js 这些路径显然不正确。

那么我该怎么做才能获取 js 文件的实际 URL?如果我可以使用 jQuery (split/replace) 来更改正文中的 URL,但这在这种情况下不起作用。

【问题讨论】:

  • @alex-shesterov 感谢您的编辑:)

标签: php javascript jquery relative-path


【解决方案1】:

您可以在抓取的 HTML 中添加base 标签。

用像tidy这样的HTML解析器打开它,转到head部分的开头并附加一个&lt;base&gt;标签。基本标签会将所有资源访问重定向到已知位置。

【讨论】:

  • base标签不只是用来重定向url而不是改变它们吗?或者这就是 tidy 的作用?
  • 是的,该标签用于重定向 URL 而不是更改它们,这样您就不需要将它们移动到您的服务器进行代理(假设您正在抓取的网页没问题)。您当前的代码无论如何都不会从网页中抓取 JavaScript 文件(或图像等)。
  • 我说的是文档头部的 js 文件,而不是基本标签所指的文档正文中的链接。我没听懂……(对不起)你能详细说明一下吗?
  • 这将导致所有 HTML 标签(如脚本!)从给定的基地址而不是 mydomain 加载(例如 theirdomain
  • 如果您希望在服务器端完成此操作(以避免那些 404 错误),则可以使用 Tidy。如果它以这种方式与 jQuery 一起工作,那么继续这样做就没有问题。很高兴我能帮上忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
相关资源
最近更新 更多