0

请你帮助我好吗。我试图从这里使用 php 简单圆顶解析器来抓取网站http://simplehtmldom.sourceforge.net/

问题是我需要识别的标签具有相同的开头,但没有相同的结尾。例如这是结构:

<div id="postmenu_2861574">
   <div id="post_message_2861574"> one posted message </div>
</div>
<div id="postmenu_2861617">
   <div id="post_message_2861617"> another posted message </div>
</div>

所有标签都具有相同的开头“post_menu”和“post_message_”,但结尾不同。是否可以在不知道所有标签结尾的情况下收集所有帖子?有没有像 sql 一样在搜索短语末尾使用 % 符号的方法?由于简单的方法不起作用,显示变量 $postmenu 为空。

foreach($html->find('div#postmenu_') as $postmenu)
     $item['message'] = $article->find('div#post_message_', 0)->plaintext;

感谢您的帮助

4

1 回答 1

0

根据http://www.w3.org/TR/CSS2/selector.html你问的是不可能的。

我会将所有带有帖子消息的 div 设为同一类,例如 class="post_message"。

然后,您可以使用以下方法找到该类的所有 div:

foreach($html->find('div.post_message') ...

由于您正在抓取网站,因此性能可能不是问题。在这种情况下,您可以简单地找到所有 div 并检查 ID,看看它是否匹配。

foreach($html->find('div') ...
  // retreive ID
  if (0 === strpos($id, 'post_message_')))
    ...
于 2013-10-02T14:13:31.307 回答