使用简单的html dom

时间:2015-05-11 17:56:36

标签: php html web-scraping file-get-contents

我在网上搜索并找到了使用简单的html dom提取数据的方法,但它给了我以下错误:

  

警告:   的file_get_contents(http://www.flipkart.com/moto-g-2nd-gen/p/itme6g3wferghmv3):   无法打开流:HTTP请求失败! HTTP / 1.1 500服务器错误   在C:\ Users \ Abhishek \ Desktop \ editor \ request \ simple_html_dom.php上   第75行

     

致命错误:在布尔值中调用成员函数find()   第9行的C:\ Users \ Abhishek \ Desktop \ editor \ request \ main.php

我为它设计的PHP代码是:

<?php 

include('simple_html_dom.php');

$html = file_get_html('http://www.flipkart.com/moto-g-2nd-gen/p/itme6g3wferghmv3');


foreach($html->find('span.selling-price.omniture-field') as $e)
    echo $e->outertext . '<br>';

?>

我是这个编程的新手,并且没有足够的知识,但我的程序中有任何错误吗?

2 个答案:

答案 0 :(得分:4)

确保fopen wrappers已启用此功能。来自the manual

  

如果已启用fopen包装器,则URL可用作此函数的文件名。

由于此被禁用file_get_contents()会返回false,这会导致您的第二个错误。

答案 1 :(得分:3)

服务器可能会根据User-Agent拒绝您的请求,尝试使用curl获取页面html,即

<?php
$url="http://www.flipkart.com/moto-g-2nd-gen/p/itme6g3wferghmv3";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_ENCODING, "");
$pagebody=curl_exec($ch);
curl_close ($ch);

include('simple_html_dom.php');
$html = str_get_html($pagebody);

foreach($html->find('.selling-price') as $e)
    echo $e->outertext . '<br>';

输出:

卢比。 10999

注意:

我可以根据用户代理确认服务器拒绝您的请求。