我如何找到这个 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 次提交)
这是我的代码:
<?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 次提交)