我如何找到这个 div ? (PHP 简单 HTML DOM 解析器)

How do I find this div ? (PHP Simple HTML DOM Parser)

这是我的代码:

<?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搜索页面的所有结果。

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

我需要的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;
?>

但问题是,如果我加载该页面,除了以下内容之外什么也没有显示:

Notice: Trying to get property of non-object in C:\xampp\htdocs...\simpletest2.php on line 4

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

编辑:

Solution:

<?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;
?>

Or:

<?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;
?>

我在搜索 class:

的地方更改了您的代码
<?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 个元素,然后我打印了第一个元素“0”的计数

$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]

这里不需要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 本身就很可能会被维护,而后者是一个 3rd 方项目,从外观上看似乎快死了(最后一次提交是在 2014 年,2014 年全年只有 1 次提交,2013 年全年只有 2 次提交)