PHP - file_get_html没有返回任何内容

时间:2018-02-07 03:48:00

标签: php

我正在尝试从this site抓取数据,使用"检查"我正在检查div的类,但是当我试图得到它时,它没有显示任何东西:

试图获得" Diamond"低于"霸权"。

我在用什么:

<?php
include('simple_html_dom.php');
$memberName = $_GET['memberName'];
$html = file_get_html('https://destinytracker.com/d2/profile/pc/'.$memberName.'');

preg_match("/<div id=\"dtr-rating\".*span>/", $html, $data);

var_dump($data);

?>

2 个答案:

答案 0 :(得分:0)

仅供参考,simple_html_dom是SourceForge上http://simplehtmldom.sourceforge.net/提供的软件包。请参阅documentation

来自simple_html_dom的

file_get_html()不返回字符串;它返回一个对象,该对象具有可以调用以遍历HTML文档的方法。要从对象获取字符串,请执行:

$url = https://destinytracker.com/d2/profile/pc/'.$memberName;
$html_str = file_get_html($url)->plaintext;

但是如果你打算这样做,你可以这样做:

$html_str = file_get_contents($url);

然后在$html_str上运行你的正则表达式。

但是......如果你想使用simple_html_dom的力量......

$html_obj = file_get_html($url);
$the_div = $html_obj->find('div[id=dtr-rating]', 0);
$inner_str = $the_div->innertext;

我不确定如何完全按照您的意愿行事,因为当我查看您提供的网络链接来源时,我找不到<div> id="dtr-rating"

答案 1 :(得分:0)

我的另一个答案是关于使用simple_html_dom。在更详细地查看HTML文档后,我发现问题与我最初的想法不同(我将把它留在那里,以便更好地使用simple_html_dom)。

我看到您正在抓取的网页是VueJS应用程序。这意味着Web服务器发送的HTML会导致Javascript运行并构建您看到的网页的动态内容。这意味着,您正在寻找的<div>正在使用服务器发送的HTML中不存在正则表达式。你的正则表达式找不到任何东西,但它不存在。

在Chrome中,执行Ctl + U以查看Web服务器发送的内容(无“Supremacy”)。执行Ctl + Shift + I并在“元素”选项卡下查看Javascript完成后的HTML是否具有魔力(这确实具有“至上性”)。

这意味着您将无法获取网页的初始HTML并将其删除以获取所需的数据。