Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php curl未显示按浏览器查看页面源所查看的正确源_Php_Curl_Web Scraping - Fatal编程技术网

Php curl未显示按浏览器查看页面源所查看的正确源

Php curl未显示按浏览器查看页面源所查看的正确源,php,curl,web-scraping,Php,Curl,Web Scraping,我正在尝试学习网页抓取,我选择了一个例子,我已经成功地获得了许多网页数据,但当我要访问时,我没有获得完整的源代码。但是,如果我从浏览器查看网页源代码,它会向我显示数据,因此,毫无疑问,内容是由JavaScript或类似代码生成的。 这是我的密码: $url ='https://www.betfair.com/sport/horse-racing'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, C

我正在尝试学习网页抓取,我选择了一个例子,我已经成功地获得了许多网页数据,但当我要访问时,我没有获得完整的源代码。但是,如果我从浏览器查看网页源代码,它会向我显示数据,因此,毫无疑问,内容是由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>


但是curl没有得到这些元素。

betfair的第一个网站不喜欢在这些元素上做蜘蛛(尽管人们经常这样做)

我知道我是html的javascript专家。但是,如果它是由ajax调用生成的,则可能会发生一些事情。如果您使用用于mozila的firebug工具,您可以看到页面对数据的请求


但我的建议主要是使用他们拥有的API。这是合法的,并且有一个带有一些限制的免费版本。Api链接

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

    $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);

它在$page结果上保存到文件中,当我在本地页面上回显它时,你会看到@Faxsy结果,并看到源代码它不在那里,你能告诉我它是如何显示的吗?事实上,如果我在网站上看到查看页面源代码它写在那里,所以它不是由ajax调用生成的。很抱歉,Faxsy在写入文件后也没有看到代码