【问题标题】:How do you access Simple DOM selectors?你如何访问简单的 DOM 选择器?
【发布时间】:2012-01-28 03:56:34
【问题描述】:

我可以使用 a 访问一些“类”项目

$ret = $html->find('articleINfo'); and then print the first key of the returned array.

但是,我还需要其他标签,例如 span=id"firstArticle_0",但我似乎找不到。

$ret = $html->find('#span=id[ etc ]');

在某些情况下会返回一些东西,但它不是一个数组,或者是一个带有空键的数组。

很遗憾,我无法使用 var_dump 查看对象,因为 var_dump 会产生 1000 页无法读取的垃圾。代码看起来像这样。

<div id="articlething"> 
    <p class="byline">By Lord Byron and <a href="www.marriedtothesea.com">Alister Crowley</a></p> 
    <p> 
    <span class="location">GEORGIA MOUNTAINS, Canada</span> | 
    <span class="timestamp">Fri Apr 29, 2011 11:27am EDT</span> 
    </p> 
</div> 
<span id="midPart_0"></span><span class="mainParagraph"><p><span        class="midLocation">TUSCALOOSA, Alabama</span> - Who invented cheese? Everyone wants to know. They held a big meeting. Tom Cruise is a scientologist. </p> 

</span><span id="midPart_1"></span><p>The president and his family visited Chuck-e-cheese in the morning </p><span id="midPart_2"></span><p>In Russia, 900 people were lost in the balls.</p><span id="midPart_3">

【问题讨论】:

  • 建议的第三方替代 SimpleHtmlDom 实际使用 DOM 而不是字符串解析:phpQueryZend_DomQueryPathFluentDom
  • SimpleHtmlDom 是要走的路。
  • @jini SimpleHtmlDom 是垃圾:)
  • 示例我可以从file_get_html($url)-&gt;find('div[id=location]'); 获得“美国”,但是当我在file_get_html($url)-&gt;find('span[id=midArticle_0]'); 上尝试同样的操作时,我什么也没有得到。啊。在这和众所周知的内存问题之间。也许我得换了。我承认我对对象的工作原理一无所知,我是一名词典编纂者。
  • 是的,Simple_DOM 不是要走的路。我浪费了 2 天时间试图让它工作。即使它确实有效,如果你能在没有记忆失败的情况下完成,你会很幸运。我发现我最初的问题是愚蠢的,因为 SPAN 标签之间没有任何内容。文本位于

    标签之间,当我尝试 var_dump 时,Simple_DOM 会冻结。可惜我喜欢这种格式。

标签: php html parsing selector simpledom


【解决方案1】:

简单的 HTML DOM 可以很容易地用于查找具有特定类的 span。

如果想要所有跨度为 class=location 则:

// create HTML DOM
$html = file_get_html($iUrl);

// get text elements
$aObj = $html->find('span[class=location]');

然后执行以下操作:

foreach($aObj as $key=>$oValue)
{
   echo $key.": ".$oValue->plaintext."<br />";
}

使用您的示例对我有用,我的输出是:

label=span, class=location: 找到 1

0:加拿大乔治亚山脉

希望对您有所帮助...简单的 HTML DOM 非常适合它的功能,并且一旦您掌握了它就易于使用。继续尝试,您将获得许多您一遍又一遍地使用的示例。我已经抓取了一些非常疯狂的页面,它们变得越来越容易。

【讨论】:

    【解决方案2】:

    尝试使用它。非常适合我并且非常易于使用。 http://code.google.com/p/phpquery/

    【讨论】:

      【解决方案3】:

      PHP Simple DOM 解析器上的文档在解读 Open Graph 元标记方面参差不齐。这似乎对我有用:

      <?php
      // grab the contents of the page
      $summary = file_get_html($url);
      
      // Get image possibilities (for example)
      
      $img = array();
      
      // First, if the webpage has an og:image meta tag, it's easy:
      if ($summary->find('meta[property=og:image]')) {
        foreach ($summary->find('meta[property=og:image]') as $e) {
          $img[] = $e->attr['content'];
        }
      }
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-05
        • 2017-05-11
        • 2023-04-02
        • 2013-07-05
        • 2023-04-10
        • 2014-05-23
        • 2012-05-24
        相关资源
        最近更新 更多