【问题标题】:Parsing/scraping issue with simplehtmldomsimplehtmldom 的解析/抓取问题
【发布时间】:2012-01-04 16:25:59
【问题描述】:

我正在尝试使用 simplehtmldom 来解析带有许多 li 标签的网页。

我只想提取出现在以下 sn-p 中的特定标签 <li class='ev_td_li c5'> 的内部文本:

<li class='ev_td_li c5'>10:00  
    <a class="ev_link_row c3" href="/fr/quoi-faire-a-sutton/programme-activites-sutton/calendrier-hebdomadaire/icalrepeat.detail/2012/01/01/13918/-/NTNkZDVjNzNiNzE1YTBmM2VhZjMyZjljNmU0ODFiNjQ=.html"
        title="Marche du 2012">Marche du 2012</a>::  
    <a class="ev_link_cat c4" href="/fr/quoi-faire-a-sutton/programme-activites-sutton/calendrier-hebdomadaire/week.listevents/2012/01/02/122.html"
        title="Outdoor, Sporting Events ">Outdoor, Sporting Events</a>
</li>

如果我使用以下代码,我会得到所有的“li”标签:

foreach($html->find('li') as $e){
 echo $e->innertext . '<br>';

但如果我尝试按以下方式添加类,我不会得到任何输出:

foreach($html->find('li.ev_td_li c5') as $e){
    echo $e->innertext . '<br>';

我想知道“li.ev_td_li c5”中的空格字符是否是问题所在。

有谁知道我做错了什么? 谢谢 艾略特

【问题讨论】:

    标签: php parsing screen-scraping simple-html-dom


    【解决方案1】:

    改用li.ev_td_li.c5(注意c5前面的.)。如果你有'li.ev_td_li c5(注意空格),它被解释为“ev_td_li 类的&lt;li&gt; 标记,后跟&lt;c5&gt; 标记”。

    【讨论】:

    • 我试过foreach($html-&gt;find('li.ev_td_li.c5') as $e) 仍然没有得到任何输出:-(
    • simplehtml 可能不支持单个标签上的多个选择器。您可能必须升级为使用完整的 DOM 设置。
    • 刚试过:foreach($html-&gt;find('li.ev_td_li') as $e),它给出了可接受的输出。我在 [simplehtmldom.sourceforge.net/manual.htm] 上没有看到任何对此的引用。是否有任何其他文档描述了这种行为?
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    相关资源
    最近更新 更多