使用PHP

时间:2017-10-13 15:11:32

标签: javascript php curl web-scraping

我已经碰到过几次这个问题,并且在这里发现了很多类似的请求,但是没有一个能提供我能够使用的直接解决方案(请耐心等待我,我&#39 ; m不是一个程序员!)......

过去我使用curl构建了相当多的php脚本来抓取页面,从概念上讲它非常简单 - 所有被抓取的页面的html都被拉进来我可以搜索任何内容是相关的。简单,即使我能做到! ; - )

但是我遇到了越来越多的动态加载其内容的网站,这意味着curl不会返回显示的最终html。简而言之,我喜欢的是能够按照我的方式工作,通过curl提供最终的HTML,但它看起来并不像那样。

我不知道自己是否清楚,所以这里有几个使用预算航空公司网站的例子......问题在每种情况下都有所不同,但在这两种情况下我只想要最后的内容! (不得不将http://www.easyjet.com/从所有网址的前面剪掉,因为它不会让我发布超过2个链接):

深入链接到easyjet.com将有两个结果之一...如果航班正在销售,例如此示例,那么它最初将重定向到/ en / buy / flights,然后立即转到/ en /买/座椅:

/深层链接DEP = LPL&安培; DEST = ACE&安培峰; dd = 2018年9月1日和安培; XDFN = 7157&安培; APAX = 1

如果它们没有在售,它将停在/ en / buy / flights上:

/深层链接DEP = LPL&安培; DEST = ACE&安培峰; dd = 2020年9月1日和安培; XDFN = 7157&安培; APAX = 1

但是,curl无法遵循重定向。以下脚本将返回/ en / buy / flights作为重定向的URL:

<? 

 $url="http://www.easyjet.com/deeplink?dep=LPL&dest=ACE&dd=2018-09-01&xdfn=7157&apax=1";   

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);           

  $html = curl_exec($ch);

  $redirectedUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

  curl_close($ch);

  echo "Original URL:   " . $url . "<BR>";
  echo "Redirected URL: " . $redirectedUrl . "\n<BR><BR>";
?>

我的另一个例子更直接解释......

https://www.ryanair.com/gb/en/最初不会加载任何内容而不是&#34; loading&#34;键入一个圆圈的飞机的图标。关闭javascript,这就是你在浏览器中看到的所有内容!

任何使用curl抓取页面的尝试都会导致我的脚本无限期挂起......

 <?

     $url="https://www.ryanair.com/gb/en/";              

      $ch = curl_init();

      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);           

      $html = curl_exec($ch);

      curl_close($ch);
    ?>

我希望避免必须拆开所有的javascript,然后找到一种直接浏览浏览器上加载的内容的方法。我也希望这样做,而无需安装和学习如何使用太多不同的技术......除了形成任何其他东西,我相当便宜的托管服务提供商保持服务器非常锁定,并且在涉及到时非常无益安装任何非标准包,扩展等!

手指交叉......

0 个答案:

没有答案