我已经碰到过几次这个问题,并且在这里发现了很多类似的请求,但是没有一个能提供我能够使用的直接解决方案(请耐心等待我,我&#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,然后找到一种直接浏览浏览器上加载的内容的方法。我也希望这样做,而无需安装和学习如何使用太多不同的技术......除了形成任何其他东西,我相当便宜的托管服务提供商保持服务器非常锁定,并且在涉及到时非常无益安装任何非标准包,扩展等!
手指交叉......