【问题标题】:get div conents from external url - best method - PHP? DOM? jQuery?从外部 url 获取 div 内容 - 最佳方法 - PHP? DOM? jQuery?
【发布时间】:2013-09-13 09:49:02
【问题描述】:

我正在尝试从 id 名称中获取 div 的内容。

这是我想要获取的 div:<div id="article-body"> ... </div>

但是,这是在另一个外部网站上,因此必须使用 www 或 http:// 等来调用它...

我相信这是可能的。只是不确定我是否应该使用 PHP、DOM 或 jQuery 等。

我认为这段代码应该可以在几行内完成。只是不知道什么是最好的方法。感谢您的提示或想法。

更新:有人建议这是一个重复的问题。它不是。我使用了下面建议的重复问题中的代码,但它不起作用。

这是错误之一: 警告:DOMDocument::loadHTML() [domdocument.loadhtml]: ID changeRegionForm 已在实体中定义,行:/home/content/w/i 中的 85 /s/wisdom33/html/testing/getDivExternalWebsite.php 第 14 行

这里是代码链接:http://massmediamail.com/testing/getDivExternalWebsite.php

代码如下:

<html>

<body>
<?
$doc = new DomDocument;

// We need to validate our document before refering to the id
$doc->validateOnParse = true;
$doc->loadHtml(file_get_contents('http://www.lifesitenews.com/news/second-madagascar-archbishop-criticizes-catholic-relief-services-full-trans'));

var_dump($doc->getElementById('article-body'));
?>
</body>
</html>

【问题讨论】:

  • 等等...您是要从外部站点获取内容,然后将它们放入页面中 ID=article-body 的 DIV 中,还是要获取 ID 为 DIV 的内容=实际上在另一个网站上的文章正文?
  • 只需要内容。然后我会将它们打包在一个 div 中,但使用我自己的 css 样式等。
  • @PapaDeBeau 抱歉,我还是不明白:DIV#article-body 存在于您的页面中还是外部源中? (不是它的内容,而是 DIV 元素本身。)这很重要,因为后者意味着 解析您从外部源获得的 HTML
  • @Amal 它不是重复的,因为我尝试了您建议的其中一个站点的代码,但我收到了这个错误:警告:DOMDocument::loadHTML() [domdocument.loadhtml]: ID changeRegionForm already defined在实体中,第 14 行 /home/content/w/i/s/wisdom33/html/testing/getDivExternalWebsite.php 中的第 85 行

标签: php jquery css dom html


【解决方案1】:

答案在http://simplehtmldom.sourceforge.net/

一旦您从上面的 url 下载代码并将其放置在适当的位置并正确链接到它,那么底部的代码就可以完美地满足我上面的要求。

<?php

// Note you must download the php files from the link above 
// and link to them on this line below. 
include_once('../simple_html_dom.php');

$html = file_get_html('http://www.lifesitenews.com/news/second-madagascar-archbishop-criticizes-catholic-relief-services-full-trans');
$elem = $html->find('div[id=article-body]', 0);
echo $elem;

?>

【讨论】:

  • 正是我想要的。我尝试了其他人,但他们删除了内部标签。
【解决方案2】:

这是错误的:

 <div> id="article-body" </div>

应该是

 <div id="article-body"></div>

我猜你想使用jQuery.ajax 从其他来源加载内容。

由于您希望某个外部 URL 中的数据的特定部分(DIV#article-body 的内容),您必须解析完整的外部内容才能获得所需的内容。

我会试试jQuery's parseHTML

【讨论】:

  • 抱歉,在我写问题时这是一个错误。修复了这个。谢谢
  • 这样我可以得到一个特定的 div 吗?好吧,我会试试的。谢谢
  • 请注意,这是客户端方法,您必须注意same-origin policy 的问题,您可以通过使用 JSONP(在 jQuery 中,dataType: " jsonp").
  • 另一种选择是使用您自己的服务器作为反向代理,使用 [cURL](php.net/manual/en/book.curl.php‎) 获取这些内容。但这在您的服务器上要重得多。
  • 感谢 LexLythius,不确定您对同源策略的评论是什么意思....但我会研究 curl。我不认为 jQuery 会工作,但我还没有尝试过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多