我做了一些测试,这是我发现的,现在:
不可能在同一页面上同时使用两者,因为使用cURL时,没有与外部服务器的通信,并且使用iframe,它会使页面尽快离开iframe的src更改.
因此,我决定预订流程应在专用页面上,在预订提供商的域中进行(easyjet.com …)
1)我是否有权考虑在真实网站上进行预订,或者是否有办法将外部网站包含在我的页面上并执行整个预订过程(基本上填写出发时的表格,到达日期等… )?
如果不可能,我用cURL做了一些测试并得出了这样的结论:
_我将不得不为每个提供商定义适当的正则表达式,我的印象是有些人有识别cURL并阻止它的机制. (例如lufthansa.com)但它与其他人(booking.com)的效果相当不错
我有两个额外的问题:
2)是否有比cURL更好的解决方案来解析页面中的某些HTML(特别是因为如果URL不包含sessionID,它不起作用)?我在考虑使用像Selenium这样的东西…
3)如何在其他选项卡或窗口上触发cURL解析? (我在考虑一个类似于可以触发一些JavaScript代码的书签的系统)
谢谢你的答案和对不起的长度:-)
更新:根据我收到的答案,这里有新的想法:对于大型供应商(easyjet,hotels.com等…),如果可用,我将使用API.对于小型提供商(例如http://www.hotel-gare-clermont.com/en,6217.html),我认为代理解决方案值得另外一个,我不会从“Hotel de la Gare”收到有关法律问题的任何投诉,同时增加对这些小型提供商的可见性.你怎么看?
您需要的是与各个提供商的合作协议.根据该协议,他们可能会打开一个API(应用程序编程接口)供您使用.这样您就可以更直接地查询他们的网站,并以清洁和批准的方式进行预订.
2)cURL是一个很棒的库,可以很好地获取网页.互联网上有许多用于将页面提取到字符串的示例.在解析该字符串方面,在理想的世界中,您可以使用XML解析器.不幸的是,HTML页面的构造非常糟糕,这使得它们难以解析.大多数编码人员在必须解析HTML块时都倾向于使用正则表达式.
要获取会话ID,您的第一个cURL请求应该是example.com上的登录表单.通过尝试获取http://example.com?username=bob&pass=secret伪造登录表单的提交.您可以通过在服务器响应中查找“成功登录”或类似文本来检查有效登录.您可以从响应标头中获取会话ID(如果它是cookie).后续cURL请求应发送您的cookie.
3)cURL在服务器端运行,因此绝对不知道您打开的选项卡.您可以使用Javascript查询标签,但我敢打赌,出于安全考虑,大多数浏览器都不允许您这样做.