curl没有显示浏览器查看页面源查看的正确源

时间:2017-02-25 20:12:00

标签: php curl web-scraping

我正在尝试学习网页抓取我选择https://www.betfair.com作为示例,我已经成功获取了许多网页数据但是当我要访问https://www.betfair.com/sport/horse-racing时,我没有得到完整的来源,但是如果我从浏览器查看页面源它向我显示数据,所以它的内容是由JavaScript或类似的东西生成的。 这是我的代码:

$url ='https://www.betfair.com/sport/horse-racing';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$page = curl_exec($ch);
curl_close($ch);
echo $page;

如果您可以看到浏览器查看来源,您可以找到:

<a href="/sport/horse-racing?action=loadRacingSpecials&tab=SPECIALS&  modules=multipick-horse-racing" class="ui-nav link ui-clickselect ui-ga-  click" data-dimension3="sports-header" data-dimension4="Specials"   data-dimension5="Horse Racing" data-gacategory="Interface"   data-gaaction="Clicked Horse Racing Header" data-galabel="Specials"
data-loader=".multipick-content-container > div, .antepost-content-  container > div, .future-racing-content-container > div, .bet-finder-content-  container > div, .racing-specials-content-container > div, .future-racing-  market-content-container > div"
>
Specials</a>

但卷曲并没有得到这些元素。

2 个答案:

答案 0 :(得分:0)

Fisrt所有网站betfair都不会在他们身上做蜘蛛(尽管人们定期这样做)。

我知道我是html的javascript专家。但事情可能发生在它是由ajax调用生成的。如果您使用firezug工具进行mozila,您可以看到页面生成数据的请求。

但最重要的是我的建议是使用他们拥有的API。这是合法的,并且有免费版本也有一些限制。 Api链接https://developer.betfair.com/

答案 1 :(得分:0)

尝试将其保存在文件中,您会注意到您要查找的代码就在那里。

    $url ='https://www.betfair.com/sport/horse-racing';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $page = curl_exec($ch);
    curl_close($ch);

    $file = fopen("1.txt","a");
    fwrite($file,$page);
    fclose($file);