使用PHP从许多(如10,000个)URL中获取元标记

时间:2015-04-20 00:34:44

标签: php web-scraping find

我尝试从电子商务网站检索产品的元标记(如10,000)。该脚本有时会工作,并且会在其余时间内失败。我面临的错误是

  

致命错误:在......

中的非对象上调用成员函数find()

请建议更好的方法。

以下是我使用的代码:

 $url = "http://www.amazon.com/dp/".$asin;
    $html = file_get_html( $url );
    $metatags = array();

foreach( $html->find( 'meta[name]' ) as $meta ) {
            $metatags[ 'meta' ][] = array(
            'name' => $meta->name,
            'content' => $meta->content
        );
    }

1 个答案:

答案 0 :(得分:0)

正如@Dagon指出的更好的使用Amazon API的方法,这个链接有一个good tutorial in this topic

任何方式,要解决代码问题,请尝试以下方法:

    $url = "http://www.amazon.com/dp/".$asin;
    $html = file_get_html( $url );
    $metatags = array();

    $names = array();
    try{
        $names = $html->find( 'meta[name]' );
    }
    catch(Exception $e)
    {
        error_log("Error: ".$e->getMessage());
    }

    foreach( $names as $meta ) {
            $metatags[ 'meta' ][] = array(
            'name' => $meta->name,
            'content' => $meta->content
        );
    }