php file_get_contents()。如何通过 url 从 body 检索特定的 div 标签

php file_get_contents(). How to retrieve particular div tags from body via url

如何从页面 url.

检索特定的 div 标签 class/id

我使用第一个函数来获取标题。 div class 的第二个给了我一个问题。 这是我使用的代码。

    function website_title() {
   $ch = curl_init();
   $url=$_POST['urle'];
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   // some websites like Facebook need a user agent to be set.
   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36');
   $html = curl_exec($ch);
   curl_close($ch);

   $dom  = new DOMDocument;
   @$dom->loadHTML($html);

   $title = $dom->getElementsByTagName('title')->item('0')->nodeValue;
   echo $title;
}
function website_content() {
  // $ch = curl_init();
   $url=$_POST['urle'];
  //$html = file_get_contents($url);
$html = file_get_contents(url);
libxml_use_internal_errors(true); //Prevents Warnings, remove if desired
$dom = new DOMDocument();
$dom->loadHTML($html);
}

您可以使用 getElementsByTagName,获取所有 div 并检查 class。更好更简单的方法是使用一些库,这会让你更容易,即 SimpleDomParser: http://simplehtmldom.sourceforge.net/

您可以使用 DomXPath 获取指定 class 的标签。例如:

$dom = new DOMDocument();
$DOM->loadHTML($html);
$finder = new DomXPath($DOM);
$myClassName = $finder->query("//*[contains(concat(' ', normalize-space(@itemprop), ' '), ' myClassName ')]");

然后你可以迭代$myClassName像dom节点列表。

我使用 DOMXPath 来整理特定元素,像这样:

$dom = new DOMDocument();
@$dom->loadHTML( $html );
$xpath = new DOMXPath( $dom );

要获取所有 div,我会使用:

$divs = $xpath->query( '//div' );

要使用 class "className" 获取所有 div,我使用:

$divs = $xpath->query( '//div[@class="className"]' );

要获取第一个 find 的内容,请按以下方式使用:

$content = $divs->item( 0 )->nodeValue;