如何使用GET或cURL从另一个网站获取表单结果

时间:2019-01-21 15:09:51

标签: php screen-scraping

我正在尝试使用cURL或GET请求从表单提交到公司网站中检索结果

我正在尝试使用php脚本从aa.com获取航班状态结果。

该表单位于https://www.aa.com/homePage.do >>航班状态(按航班号和日期搜索),当您在表单上输入数据时,便会获得航班状态,并且地址窗口中的URL如下:

https://www.aa.com/travelInformation/flights/status/detail?search=AA|1698|2019,1,23&ref=search

在将日期下拉列表中选择1月23日星期三之后,其中航班号1698和2019年,1,23是网址格式的日期。

我尝试将两个file_get_contents都用于页面,例如:

    $flight_data = file_get_contents("https://www.aa.com/travelInformation/flights/status/detail?search=AA|$flight|$formatted_date|&ref=search");

其中$ flight和$ formatted日期被替换为我网站上的表单输入。

    $flight_data = file_get_contents("https://www.aa.com/travelInformation/flights/status/detail?search=AA|1698|2019,01,23|&ref=search");

在处理此问题并将结果打印到屏幕上时,它不包含航班状态信息,而仅包含一些常规输出。

当我使用cURL尝试获取数据时:

    $target = 'https://www.aa.com/travelInformation/flights/status/lookup';

$agent = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5";

//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
    $post_items[] = $key . '=' . $value;
}

//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);

//create cURL connection
$ch = curl_init();

//set options
curl_setopt($ch, CURLOPT_URL, $target);
curl_setopt($ch, CURLOPT_REFERER, $ref);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

//set data to be posted
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, true);

//perform our request
$flight_data = curl_exec($ch);

//show information regarding the request
print_r(curl_getinfo($ch));
echo curl_errno($ch) . '-' .
    curl_error($ch);

//close the connection
curl_close($ch);*/

print $flight_data;

我得到相同的通用输出。

我希望得到的是页面的来源,好像我实际上已经去过aa.com并在其表格上输入了航班信息一样。然后,我想解析该结果,以获取在给定日期具有给定航班号的所有航班。

谢谢。

0 个答案:

没有答案