【问题标题】:How can I get page's <title> tag's content if it can't be parsed as XML?如果无法将页面的 <title> 标记的内容解析为 XML,如何获取它?
【发布时间】:2010-06-28 19:25:48
【问题描述】:

我正在使用 PHP libcurl 加载页面。现在我需要获取这个页面的

标签的内容,以及一些其他的信息。我尝试使用 SimpleXML 解析它,但没有运气,因为该页面不是有效的 XML。你能建议一些其他方法来轻松获取 <title> 标签的内容吗?谢谢。

【问题讨论】:

    标签: php html xml curl libcurl


    【解决方案1】:

    您可以使用DOMDocument::loadHTML

    这将回显“标题”:

    <?php
    
    $doc = <<<HTML
    <html>
    <head>
    <title>The title</title>
    <body>
    hhhhhh
    HTML;
    
    libxml_use_internal_errors(true);
    $d = new DOMDocument;
    $d->loadHTML($doc);
    $ts = $d->getElementsByTagName("title");
    if ($ts->length > 0) {
        echo $ts->item(0)->textContent;
    }
    

    【讨论】:

    【解决方案2】:

    或者你可以使用Simple HTML DOM

    【讨论】:

      【解决方案3】:

      您可以使用此脚本来获取页面的标题。

      # Script Title.txt
      var str page, content
      cat $page > $content
      stex -r -c "^<title&</title&\>^" $content
      

      将此小代码保存在文件 C:/Scripts/Title.txt 中。代码在双脚本中。开始biterscripting,然后输入这个命令。

      script "C:/Scripts/Title.txt" page("http://stackoverflow.com/questions/3135488/how-can-i-get-pages-title-tags-content-if-it-cant-be-parsed-as-xml")
      

      它将获得此页面的标题(您正在查看的那个)。使用任何其他 URL 或本地文件路径作为 page() 的值。使用双引号。当我执行这个命令时,我得到了

      如何获取页面的

      标签的内容,如果它 不能解析为 XML? - 堆 溢出

      您可以从任何可执行文件或批处理文件中调用此脚本。

      【讨论】:

        【解决方案4】:

        尝试使用 Yahoo 的 YQL 控制台。您可以查询几乎任何 url,然后以 XML 格式要求返回结果。您甚至可以添加 xpath 来缩小范围。

        http://developer.yahoo.com/yql/console/

        也许您可以使用 curl 调用此服务。这很方便。

        【讨论】:

          猜你喜欢
          • 2019-05-28
          • 1970-01-01
          • 2013-07-30
          • 1970-01-01
          • 1970-01-01
          • 2013-05-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-28
          相关资源
          最近更新 更多