![](/img/trans.png)
[英]How to put this on code https://graph.facebook.com/ql?q=http://google.com
[英]code not parsing through a simple google.com test
<?php
$file = 'http://www.google.com';
$doc = new DOMDocument();
@ $doc->loadHTML(file_get_contents($file));
echo $doc->getElementsByTagName('span')->item(2)->nodeValue;
if (0 != $element->length)
{
$content = trim($element->item(2)->nodeValue);
if (empty($content))
{
$content = trim($element->item(2)->textContent);
}
echo $content . "\n";
}
?>
我正在尝试从google.com的主页获取span标签的内部内容。 此代码应输出第一个span标记,但不输出任何结果?
这不是错误... http://www.google.com
的第一个跨度为空,并且不确定您还期望什么
<span class=gbtcb></span> <---------------- item(0)
<span class=gbtb2></span> <---------------- item(1)
<span class=gbts>Search</span> <----------- item(2)
尝试
$element = $doc->getElementsByTagName('span')->item(2);
var_dump($element->nodeValue);
产量
Search
首先,请记住,HTML不一定是有效的XML。
除此之外,请检查您是否确实要解析一些内容; 您需要启用allow_url_fopen
才能将file_get_contents()
与URL结合使用。
通常,避免使用错误抑制运算符(@),因为几乎可以肯定它会再次咬住您一段时间(此时可能正是该时间); 在SO的其他地方对此进行了讨论。
因此,作为第一步,请切换至以下内容,让我知道您是否有任何内容。
// stop using @ to suppress errors
$contents = file_get_contents($file);
// check that you're getting something to parse
echo $contents;
试试这个,告诉我们输出是什么
<?
echo ini_get('allow_url_fopen');
?>
尝试使用cURL获取数据,然后将其加载到DOMDocument中:
<?php
$url = "http://www.google.com";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
$dom = new DOMDocument();
@$dom->loadHTML($data); //The @ is necessary to suppress invalid markup
echo $dom->getElementsByTagName('span')->item(2)->nodeValue;
if (0 != $element->length)
{
$content = trim($element->item(2)->nodeValue);
if (empty($content))
{
$content = trim($element->item(2)->textContent);
}
echo $content . "\n";
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.