我怎么找到这个div? (PHP Simple HTML DOM Parser)

时间:2017-12-14 13:13:40

标签: php html simple-html-dom

这是我的代码:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $title=$html->find('div#ires', 0)->innertext;
    echo $title;
?>

它会在搜索“BA236”下输出Google搜索页面的所有结果。

问题是我不需要所有这些,我需要的信息是在没有id或类或其他任何内容的div中。

我需要的div是第一个

<div class="g">
页面上的

,也许我应该尝试这样的事情:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $title=$html->find('div[class=g], 0')->innertext;
    echo $title;
?>

但问题是,如果我加载页面,它除了显示我之外什么都没有:

  

注意:尝试获取非对象的属性   第4行的C:\ xampp \ htdocs ... \ simpletest2.php

那么我怎样才能得到我正在寻找的div以及我做错了什么?

修改

  

解决方案:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $e = $html->find("div[class=g]");
    echo $e[0]->innertext;
?>
  

或者:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $title=$html->find('div[class=g]')[0]->innertext;
    echo $title;
?>

2 个答案:

答案 0 :(得分:4)

我在代码中对代码进行了更改:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $e = $html->find("div[class=g]");
echo $e[0]->innertext;
?>

结果:

British Airways Flight 236

Scheduled   departs in 13 hours 13 mins

Departure   DME 5:40 AM     —

Moscow  Dec 15      

Arrival LHR 6:55 AM     Terminal 5

London  Dec 15      

Scheduled   departs in 1 day 13 hours

Departure   DME 5:40 AM     —

Moscow  Dec 16      

Arrival LHR 6:55 AM     Terminal 5

London  Dec 16      

我用class g查找了div元素然后我打印了第一个元素的计数&#39; 0&#39;

$e = $html-> find ("div [class = g]");
echo $e [0]->innertext;

您的代码:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $title=$html->find('div[class=g]')[0]->innertext;
    echo $title;
?>

不是('div[class=g], 0')

但是('div[class=g]')[0]

答案 1 :(得分:0)

这里不需要simple_html_dom,使用内置DOMDocument和DOMXPath很容易。

<?php
$html = file_get_contents('http://www.google.com/search?q=BA236');
echo (new DOMXPath ( (@DOMDocument::loadHTML ( $html )) ))->query ( '//div[@class="g"]' )->item ( 0 )->textContent;

在我看来,DOMDocument + DOMXPath使simple_html_dom.php变得毫无意义。前者2可以做几乎所有simple_html_dom都可以做的事情,并且是内置的本机php函数,只要PHP本身被维护就可以维护,而后者是第三方项目,看起来几乎死了它(最后一次提交是在2014年,2014年全部只提交了1次,2013年全部提交了2次)