通过php从另一个网站获取文本[关闭]

Posted

技术标签:

【中文标题】通过php从另一个网站获取文本[关闭]【英文标题】:Take text from another website through php [closed] 【发布时间】:2014-03-11 13:59:09 【问题描述】:

我试图从另一个网站“获取”文本,并将其发布到我的网站上,这样当另一个网站更新“div”或其他对象内的文本时,我的网站也会更新。

这可以在 php 中完成吗?如果有,怎么做?

【问题讨论】:

可以,但需要在 crontab 中运行脚本。 您有其他网站的许可吗? 您将需要 PHP 中的 curl 之类的东西来向其他站点发出 HTTP 请求。有关 curl 的更多信息,请参阅此 SO:***.com/questions/3062324/what-is-curl-in-php 您可以选择在每次加载页面时检查其他站点,或者您可以按照 ImadOS 的建议运行 cron 作业(或 Windows 中的计划任务)。 【参考方案1】:

php 有内置函数 file_get_contents 来做这个

$html=file_get_contents("http://www.website.com")

但这并不是特别有用,而且您不能对请求设置超时,所以这里有一个使用 curl 的快速函数:

function getHTML($url,$timeout)

       $gs = curl_init($url); // initialize curl with given url
       curl_setopt($gs, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); // set useragent
       curl_setopt($gs, CURLOPT_RETURNTRANSFER, true); // write the response to a variable
       curl_setopt($gs, CURLOPT_FOLLOWLOCATION, true); // follow redirects
       curl_setopt($gs, CURLOPT_CONNECTTIMEOUT, $timeout); // max. seconds
       curl_setopt($gs, CURLOPT_FAILONERROR, 1); // stop if an error is encountered
       return @curl_exec($gs);

然后你可以使用正则表达式来获取你想要的数据,例如

preg_match("/<title>(.*)<\/title>/i", $html, $match);
$pagetitle = $match[1];

编辑:

针对下面关于 Regex 的评论,我建议您查看以下 Stack Overflow 问题和答案:

This one!

PHP 文档对象模型可能正是您所寻找的。​​p>

【讨论】:

不要用正则表达式解析 html - 这会导致疯狂 查看更新的答案。您是在考虑 PHP 文档对象模型还是有其他建议? yup DOM,并不总是最好的选择,但通常比正则表达式更好 很公平。我想这取决于您正在解析的页面的大小。你知道 PHP DOM 是否比 REGEX 更快? 很有趣,他指的是这个:***.com/a/1732454/457836关于堆栈溢出的最佳答案。【参考方案2】:

这个呢:

 <?php
 function getHTMLData($url , $query)
     $data = simplexml_load_file($url);
     $result = $data->$query;
 

记住 HTML 来自 XML,浏览器使用那里的标签解析它

【讨论】:

以上是关于通过php从另一个网站获取文本[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 从另一个网站获取 OuterHtml

从另一个网站的 html 表中检索一行?

怎么提取一个网站的PHP源码?

从另一台机器访问 wordpress 站点

为网站创建 API [关闭]

使用 JAVA/PHP 将 Netbanking 集成到网站(在印度)[关闭]