PHP Simple HTML DOM Parser:获取所有帖子

时间:2013-11-27 14:51:06

标签: php dom simple-html-dom

我有一个简单的任务。 从页面获取所有文章,并获取每篇文章的所有图片。

今天我决定使用PHP Simple HTML DOM Parse

例如,我使用了以下代码:

<?php

include("simple_html_dom.php");

$sitesToCheck = array(
    array(
        'url' => 'http://googleblog.blogspot.ru/',
        'search_element' => 'h2.title a',
        'get_element' => 'div.post-content'
    ),
    array(
        // 'url' => '',            // Site address with a list of of articles
        // 'search_element' => '', // Link of Article on the site
        // 'get_element' => ''     // desired content
    )
);

$s = microtime(true);

foreach($sitesToCheck as $site)
{
    $html = file_get_html($site['url']);

    foreach($html->find($site['search_element']) as $link)
    {
        $content   = '';
        $savePath  = 'cachedPages/'.md5($site['url']).'/';
        $fileName  = md5($link->href);

        if ( ! file_exists($savePath.$fileName))
        {
            $post_for_scan = file_get_html($link->href);

            foreach($post_for_scan->find($site["get_element"]) as $element)
            {
                $content .= $element->plaintext . PHP_EOL;
            }

            if ( ! file_exists($savePath) && ! mkdir($savePath, 0, true))
            {
                die('Unable to create directory ...');
            }

            file_put_contents($savePath.$fileName, $content);
        }
    }
}

$e = microtime(true);

echo $e-$s;

我会尝试只获得没有图片的文章。但是我收到服务器的响应

  

“超过120秒的最长执行时间”

请向我解释我做错了什么......

告诉我有没有其他方法可以获取特定地址的每篇文章的所有文章和所有图片?

1 个答案:

答案 0 :(得分:1)

我和那个库有类似的问题。请改用PHP DOMDocument:

$doc = new DOMDocument;
$doc->loadHTML($html);
$links = $doc->getElementsByTagName('a');
foreach ($links as $link) {
  doSomethingWith($link->getAttribute('href'), $link->nodeValue);
}

请参阅http://www.php.net/manual/en/domdocument.getelementsbytagname.php