PHP file_get_contents booking.com网站

问题描述:

我试图从酒店得到一个booking.com页面,然后用正则表达式获取价格。问题如下:PHP file_get_contents booking.com网站

我打电话file_get_contents与参数如登记和结帐(file_get_contents("/hotel/at/myhotel.html?checkin=2017-10-12&checkout=2017-10-13"))日期,以便价格显示给访问者。如果我看在浏览器的源代码,我看到条目:

b_this_url : '/hotel/at/myhotel.html?label=gen173nr-1FCAsoDkIcbmV1ZS1wb3N0LWhvbHpnYXUtaW0tbGVjaHRhbEgHYgVub3JlZmgOiAEBmAEHuAEHyAEM2AEB6AEB-AEDkgIBeagCAw;sid=58ccf750fc4acb908e20f0f28544c903;checkin=2017-10-12;checkout=2017-10-13;dist=0;sb_price_type=total;type=total&', 

如果我回波的file_get_contents字符串看起来像字符串:

b_this_url : '/hotel/at/myhotel.html', 

所以一切,我传递给网址参数file_get_contents已消失,因此我找不到任何价格与我的正则表达式在页面上...

有没有人有这个问题的解决方案?

+0

我试图理解你的问题,但失败了。你可以更清楚地解释一下 –

+1

看看[link]的源代码(https://www.booking.com/hotel/at/hilton-innsbruck.de.html?checkin=2017-10-10;checkout = 2017-10-11)并查看b_this_url: - 您将在那里看到带有参数的URL。使用file_get_contens获取相同的网址并回显响应 - 您将看到b_this_url仅包含酒店的基本网址,并且所有参数都消失了... - 希望我描述得更好... – heppi75

该网页并非完全生成服务器端,但它在HTML部分加载后严重依赖于JavaScript。如果你正在寻找渲染页面,因为它看起来在浏览器中,我认为你应该使用php curl而不是file_get_contents()这种网络报废的东西。我为您的指定网址从邮递员(谷歌浏览器扩展/独立桌面应用程序)生成了一个自动代码。该响应包含带有参数的完整网址。看到图片,我也为你发布了代码。

enter image description here

<?php 

$curl = curl_init(); 

curl_setopt_array($curl, array(
    CURLOPT_URL => "https://www.booking.com/hotel/at/hilton-innsbruck.de.html?checkin=2017-10-10%3Bcheckout%3D2017-10-11", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
    CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache", 
    "postman-token: 581a75a7-6600-6ed6-75fd-5fb09c25d927" 
), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo $response; 
}