我正在编程 php 抓取器。我想抓取一些文本,然后将抓取的内容与上次扫描时存储在我的数据库中的内容进行比较。一切正常。但我想扫描“过滤器”表单所在的 url,以便它发布一些数据,因此我看不到要扫描的确切 url。有什么办法吗,我的脚本会提交带有我想要的数据的表单,这样它就会显示我想要的脚本内容,然后我可以抓取内容?
它就像
$url = 'myurl';
$data=get_data($url);
$grabbed=strip_tags(get_match('some regex',$data);
function get_data($url){
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
function get_match($regex,$content)
{
preg_match($regex,$content,$matches);
return $matches[1];
}
这很好用,但我需要该 url 上的表单提交脚本,这将使我的内容可访问。那可能吗?
非常感谢,
马丁。
更新 :
<?php
//url
$url = "http://data.skga.sk/Tournaments.aspx";
//get the page content
$content = get_data($url);
echo $content;
//gets the match content
function get_match($regex,$content)
{
preg_match($regex,$content,$matches);
return $matches[1];
}
//gets the data from a URL
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "ctl00%24RightContentPlaceholder%24dpTo=20.10.2012");
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
那是我现在的代码。但我仍然不知道如何解决它。当我在浏览器中执行http://data.skga.sk/Tournaments.aspx?ctl00%24RightContentPlaceholder%24dpTo=20.10.2012很好。但是当我运行这个 php 时,我可以看到默认页面