【问题标题】:HTML DOM Parser - How to get the first post of all topics in a forumHTML DOM Parser - 如何获取论坛中所有主题的第一篇文章
【发布时间】:2011-07-12 19:02:14
【问题描述】:

我试图在 sitepoint javascript 论坛中删除每个主题的第一篇文章。但是 DOM 解析器会为我提供站点点 JAVASCRIPT 论坛中每个主题的所有帖子。也许我没有正确遍历 DOM ?以下是我的代码:

<?php

class Sitepoint extends Controller
{
    public function index()
    {
        $this->load->helper('dom');
        header('Content-Type: text/html; charset=utf-8');
        echo '<ol>';

            $html = file_get_html('http://www.sitepoint.com/forums/javascript-15');

            foreach($html->find('a[id^="thread_title"]') as $topic) {
                $post =$topic->href;
                $posthtml = file_get_html($post);
                $posthtml->find('div[id^="post_message"]', 0);
                echo'<li>';
                echo $topic->plaintext.'<br>';
                echo $posthtml->plaintext.'<br>';
                echo'</li>';
            }
        echo '</ol>';
    }
}

【问题讨论】:

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


    【解决方案1】:

    您忘记将$posthtml-&gt;find 的结果分配给变量:

    foreach($html->find('a[id^="thread_title"]') as $topic) {
        $post =$topic->href;
        $posthtml = file_get_html($post);
        $posttext = $posthtml->find('div[id^="post_message_"]', 0);
        echo'<li>';
        echo $topic->plaintext.'<br>';
        echo $posttext->plaintext.'<br>';
        echo'</li>';
    }
    

    【讨论】:

    • 谢谢。使用相同的代码,我一次可以从其他论坛中提取 15 个主题,但使用 sitepoint.com,我只能提取 3 个第一个主题。是因为他们使用反机器人软件还是我的服务器连接限制?
    • 好吧,我现在试了一下,在第 30 篇帖子之后我停止了脚本。所以,这可能是一个反机器人,甚至可能你的连接不好:)
    • 您在不循环分页的情况下获得 30 个帖子?还是通过分页循环?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    相关资源
    最近更新 更多