【问题标题】:PHP file_get_contents booking.com SitePHP file_get_contents booking.com 网站
【发布时间】:2017-10-10 16:18:51
【问题描述】:

我尝试从酒店获取 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 传递给 url 的所有参数都消失了,因此我在页面上找不到任何使用正则表达式的价格...

有人有解决这个问题的办法吗?

【问题讨论】:

  • 我试图理解你的问题但失败了。能否请您解释的更清楚
  • 查看link 的源代码并查看b_this_url : - 您将在那里看到带有参数的URL。使用 file_get_contens 获取相同的 url 并回显响应 - 在那里你会看到 b_this_url 只包含酒店的基本 url 并且所有参数都消失了...... - 希望我描述得更好......

标签: php file-get-contents


【解决方案1】:

网页并非完全在服务器端生成,而是在 HTML 部分加载后严重依赖 JavaScript。如果您正在寻找呈现在浏览器中的页面,我认为您应该使用 php curl 而不是 file_get_contents() 来进行这种网络抓取。我从 Postman(谷歌浏览器扩展程序/独立桌面应用程序)为您的给定网址生成了一个自动代码。响应包含带有参数的完整 url。查看图片,我也为您发布了代码。

<?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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2015-03-23
    • 2011-11-06
    • 2011-06-03
    相关资源
    最近更新 更多