【问题标题】:parsing script isnt putting out解析脚本没有推出
【发布时间】:2012-11-25 03:27:54
【问题描述】:
<?

$file = "http://www.google.com";
$doc = new DOMDocument();
echo @$doc->loadHTML(file_get_contents($file));


$element = $doc->getElementsbyTagName('span');



echo trim($element->item(0)->nodeValue);
echo trim($element->item(0)->textContent);

if (!is_null($element)) {
        $content = $element->nodeValue;

        if (empty($content)) {
            $content = $element->textContent;


           }

            echo $content . "\n";
        }

?>

我正在尝试测试这个脚本,我想知道为什么我不能解析谷歌?如果您查看源页面,在 span 中按 ctrl+f 类型,显然有一个 span 标签。为什么不给我结果?

【问题讨论】:

  • 你试过在 DOMDocument 中输出 HTML 吗? var_dump($doc-&gt;saveHTML()); 看看它是否包含您认为它包含的内容?
  • 你试过买晚餐了吗??
  • @RutgersMike,我想知道是否有人会就标题发表评论。
  • @davidethell 通常“不”表示“不”=oP

标签: php parsing screen-scraping


【解决方案1】:
<?php

$file = 'http://www.google.com';
$doc = new DOMDocument();
@ $doc->loadHTML(file_get_contents($file));

$element = $doc->getElementsByTagName('span');

if (0 != $element->length) 
{
    $content = trim($element->item(0)->nodeValue);
    if (empty($content)) 
    {
        $content = trim($element->item(0)->textContent);
    }
    echo $content . "\n";
}

?>

【讨论】:

  • 你的 $file 值是错误的,你指定了 $DOCUMENT_ROOT 然后把 URL 放到谷歌,所以我把它改成只是谷歌的 URL 并且改变 loadHTMLFile() 到 loadHTML() 哪里它将使用 file_get_contents() 获取的内容,因此是 Google 的 HTML。
  • 如果我回显@$doc->loadHTML(file_get_contents($file));它返回“1”,但至于让它搜索 dom 节点,不行。 .
  • 您应该将 error_reporting 设置为 E_ALL,因为我认为您没有启用它,否则上述操作会为您生成错误。
  • 唯一的错误是您在 getElementsTageName 中忘记了“by”,哈哈,对吧.. ?
  • 我没有忘记任何事情,我从未更改过您原始代码中的那一行。顺便说一句,开发时不要使用@来抑制错误,否则你会错过重要的错误。我正在尝试调试您的代码,所以请过几分钟再回来。
【解决方案2】:

不是 100% 确定,但不需要在 php.ini 中启用 allow_url_fopen 才能使其工作?

代码已删除

【讨论】:

  • allow_url_fopen 不是一个函数,它是一个 PHP 指令,那你为什么要在上面使用 function_exists() 呢?
  • 只是一个建议,我想我不正确。似乎在我的测试中起作用。不需要启用该指令吗?
猜你喜欢
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 2016-04-28
相关资源
最近更新 更多