我正在尝试学习网页抓取我选择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>
但卷曲并没有得到这些元素。
答案 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);