从网址获取特定数据

时间:2015-07-04 11:49:33

标签: php

我查了解其他答案,但其中没有一个似乎适合我,因为那些回答的人忘记添加评论。我试图从网址中的div获取特定的P值。我有3个案例,但在任何情况下如何才能获得<p>中的第一个div class="entry-content"

案例1

<div class="entry-content">
    <div></div>
    <div></div>
    <p> want to get content here </p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <div></div>
  </div>

案例2

  <div class="entry-content">
    <div></div>
    <p> want to get content here </p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <div></div>
   </div>

案例3

  <div class="entry-content">
    <p> want to get content here </p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <div></div>
</div>

.PHP

$html = file_get_contents('http://www.myurl.com/');
$doc = new DOMDocument();
@$doc->loadHTML($html);
$p=$doc->getElementByClassName('entry-content')->getElementsByTagName('p')->item(0);
echo $p->nodeValue;

2 个答案:

答案 0 :(得分:2)

您可以使用PHP's DOMXPath class选择带有类的元素。 PHP's DOMDocument class没有getElementsByClassName方法。

<?php
    $html = file_get_contents('http://www.myurl.com/');

    $doc = new DOMDocument;
    $doc->loadHTML($html);
    $finder = new DomXPath($doc);
    $p = $finder->query("//*[contains(@class, 'entry-content')]")->item(0)->getElementsByTagName('p')->item(0);

    echo $p->nodeValue;
?>

答案 1 :(得分:0)

使用jquery很容易:

var firstP = $('.entry-content p:first');

但是你的代码看起来像php,所以我有点困惑你要归档什么。