【问题标题】:Get HTML from another domain从另一个域获取 HTML
【发布时间】:2012-04-24 15:31:23
【问题描述】:

我想每隔 30 秒获取一个特定链接,并在我的程序中解析它的代码。有没有办法做到这一点?

我需要在它的代码中找到某些东西,这些东西总是以固定的时间间隔改变。

我尝试使用iframe 并获得它的innerHTML,但这不起作用,php 的file_get_contents() 也不起作用。

【问题讨论】:

  • 是的,您可以使用 file_get_contents() 或 cURL。如果file_get_contents() 不起作用,那么您可能需要指定refererUser-Agent 标头。还要绝对确保您有权做您正在做的事情。
  • 您要连接的站点是否有可以使用的 API?您可能应该与网站的所有者交谈,看看是否有更简单的方法来获取内容
  • 警告:file_get_contents(www.******.com) [function.file-get-contents]:打开流失败:连接尝试失败,因为连接方没有一段时间后正确响应,或者由于连接的主机没有响应而建立的连接失败。在第 2 行的 C:\wamp\www******\test2.php 中

标签: php html curl


【解决方案1】:

你可以试试这个吗? http://davidwalsh.name/download-urls-content-php-curl

代码

 /* gets the data from a URL */
function get_data($url)
{
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

然后调用

$returned_content = get_data('http://davidwalsh.name');

(归功于大卫·沃尔什)

【讨论】:

  • 太棒了。如果可行,请勾选并投票给我的答案:D 祝你好运
  • 链接消失后,仅作为链接的答案将变得毫无用处。最好在这里也总结一下内容。
  • @webbiedave 这是真的.. 我刚刚为 user783476 做了一个快速的谷歌搜索。我自己不是 PHP 开发人员
  • 好吧...当我使用你的链接(davidwalsh.name)时它工作但当我想连接到我的时它没有做任何事情(neobux.com
  • 事情是......当我在 url 中写 https://.... 时,什么也没有发生......我只是得到一个没有错误的空白页。
【解决方案2】:

我尝试过使用 iframe 并将其设置为 innerHTML,但这不起作用

这会遇到same origin policy

php 的 file_get_contents() 也不起作用

如果数据在 HTML 本身中,它应该可以(除非在您的 PHP 安装中禁用了该功能)。

您尝试抓取的网站可能已采取措施阻止滥用爬虫。

(访问第三方网站并每 30 秒抓取一次他们的 HTML 听起来很可恶)。

【讨论】:

    【解决方案3】:

    file_get_content 不起作用,因为它已在您的服务器上被禁用(可能出于安全原因)。您可以启用它,也可以使用 cURL。

    【讨论】:

    • 好吧,也许网站检测到您没有使用浏览器,而是使用脚本来下载其数据,并且不希望您这样做。尝试设置一些额外的常用标题...
    • hmm...如果我使用一些标题,我可以欺骗网站认为浏览器正在尝试访问它的数据?
    • 没错。不过,出于明显的原因,不建议这样做。
    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多