我使用PHP和xpath来解析一些HTML页面:在上一期(rif。Parsing an HTML page using curl and xpath in PHP)中,我已经解决了如何解析页面以提取某些值。
现在我还有另一页,在获得我要解析的价值之前,我选择了一个价值(图片中的威尼斯......,在组合框和&#3中) #34; Provincia" ...),然后点击一个按钮(" CERCA"在图片中......),然后点击我想要解析的值(这是页面中红色,绿色和黄色框中的数字....)
网址页面如下
https://salute.regione.veneto.it/servizi/situazione-nei-pronto-soccorso
此处您在上述选择和操作后的页面图像
是否有可能以及如何在PHP中模拟此HTML导航序列以获取HTML页面,而不是解析?
答案 0 :(得分:1)
在PHP中,您可以使用curl将表单数据发布到与表单操作相同的URL:https://salute.regione.veneto.it/servizi/situazione-nei-pronto-soccorso?p_p_id=PRONTOSOCCORSO_WAR_portalprontosoccorso_INSTANCE_o0QZ&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_count=1
然后返回HTML页面。
php脚本示例,inspirédehttps://davidwalsh.name/curl-post(您必须安装curl才能使用此示例):
<?php
$url = 'https://salute.regione.veneto.it/servizi/situazione-nei-pronto-soccorso?p_p_id=PRONTOSOCCORSO_WAR_portalprontosoccorso_INSTANCE_o0QZ&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_count=1';
$fields = array(
'ulss' => '101',
'provincia' => 'BL',
'nomPS' => '',
'rossoInAttesa' => '',
'gialloInAttesa' => '',
'verdeInAttesa' => '',
'biancoInAttesa' => ''
);
//url-ify the data for the POST
$fields_string = "";
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//execute post
$result = curl_exec($ch);
file_put_contents('result_page.html', $result);
//close connection
curl_close($ch);