从远程网站提取HTML内容并在页面上显示

现在已经有一段时间了,我很难过。 我试图从远程网站页面上的特定div中提取内容,然后将该html插入我自己网站上的div中。 我知道你不能单独使用jQuery的.ajax,.load或.get方法来进行这种操作。

这是远程页面的HTML:

  
...table #1 content... ...More table content...
...table #2 content...
...table #3 content...

目标:我正在尝试从远程页面的第一个表中获取html。 所以,在我的网站上,我希望获取以下html并将其放在id =“fetched-html”的div中:

  ...table #1 content... ...More table content... 

到目前为止,我正在使用我的PHP函数:

 loadHTML($output); // Get 1st table $output = $DOM->firstChild->getElementsByTagName('table'); return $output; } ?> 

最终结果应该在我的本地网站页面上显示如下:

 
...table #1 content... ...More table content...

这是另一个PHP函数的可能性?

 <?php function pullRaspPi_SDImageTable() { // Url to fetch $url = "http://www.raspberrypi.org/downloads"; $ch = curl_init($url); $fp = fopen("raspberrypi_sdimagetable.txt", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); // Write html source to variable $rasp_sdimagetable = curl_exec($ch); // Close curl request curl_close($ch); return $rasp_sdimagetable; } // Then in the head of the html, add this jQuery:  $("#fetched-html").load(" table.table:first");  

问题是,两种function都不起作用。 :( 有什么想法吗?

从网站中提取HTML片段是一件轻而易举的事情, 然后您可以执行以下操作:

 function pullRaspi_SDImageTable() { $filename = '/tmp/downloads.html'; /// Where you want to cache the result $expiry = 600; // 10 minutes $output = ''; if (!file_exists($filename) || time() - $expiry > filemtime($filename)) { // There is no cache, so fetch the results from remote server require_once('simple_html_dom.php'); $html = file_get_html('http://www.raspberrypi.org/downloads'); foreach($html->find('div.entry-content table.table') as $elem) { $output .= (string)$elem; } // Store the cache file_put_contents($filename, $output); } else { // Pull the content from the cahce $output = file_get_contents($filename); } return $output; } 

这将为您提供table.table HTML

你不能单独使用jQuery的.ajax,.load或.get方法来进行这种操作

是的,您可以但是远程网站必须为您授予权限..只需插入iframe并使用正常的DOMfunction即可,如果没有跨域限制。

您只能使用php获取完整页面(使用常用functioninclude,require等,并传递网站URL,但同样的情况下,您需要获得授权..