结合CURL和简单的html dom

You*_*uss 5 php curl simple-html-dom

我一直在使用CURL来抓取网站一段时间以及简单的HTML DOM.我经历过CURL对于抓取网站要好得多.但是我真的很喜欢Simple HTML DOM的简单性.所以我想为什么不把两者结合起来,我试过:

require_once('simple_html_dom.php');

    $url = 'http://news.yahoo.com/';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $curl_scraped_page = curl_exec($ch);

    $html = new simple_html_dom();
    $html->load($curl_scraped_page);


    foreach($html->find('head') as $d) {
        $d->innertext = "<base href='$url'>" . $d->innertext;
    }

    echo $html->save();
Run Code Online (Sandbox Code Playgroud)

我尽我所能,但它不起作用.我还能尝试什么?

小智 10

尝试改变这个:

$html->load($curl_scraped_page);
Run Code Online (Sandbox Code Playgroud)

对此:

$html->load($curl_scraped_page, true, false);
Run Code Online (Sandbox Code Playgroud)

问题是simple_html_dom默认删除所有\ r \n,在这种情况下它会破坏javascript代码,因为雅虎不会以分号结束它.

您可以在浏览器控制台上看到此错误,还可以看到simple_html_dom删除查看源的换行符.