现有一.net做的网站,它是用__doPostBack做分页的,我通过一个程序,能访到到它的第一个页面如
http://www.fotocasa.es/busq/resultados.aspx?idTipoInmueble=2&idTipoOferta=2&idProvincia=27&idZona1=0&idZona2=0&idBarrio=0&idOtrasZonas=0&IdPoblacion=0&idDistrito=-2&Precio=0&Superficie=0&nHabitaciones=0&idTipoVivienda=0&x=50&y=9我现在要访问他的第二个页面(远程程序访问,一般网站都有一个page参数如page=2)因为其分页是用__dopostback做的,url参数完全一样,我怎么样才能访问到他的第二页(程序自动访问,不是手动翻页,因为要从该网站获取数据是通过URL进行的,该地址第一页/第二页/__等等URL地址完全一样,故程序没法执行)?高手指点一下
http://www.fotocasa.es/busq/resultados.aspx?idTipoInmueble=2&idTipoOferta=2&idProvincia=27&idZona1=0&idZona2=0&idBarrio=0&idOtrasZonas=0&IdPoblacion=0&idDistrito=-2&Precio=0&Superficie=0&nHabitaciones=0&idTipoVivienda=0&x=50&y=9我现在要访问他的第二个页面(远程程序访问,一般网站都有一个page参数如page=2)因为其分页是用__dopostback做的,url参数完全一样,我怎么样才能访问到他的第二页(程序自动访问,不是手动翻页,因为要从该网站获取数据是通过URL进行的,该地址第一页/第二页/__等等URL地址完全一样,故程序没法执行)?高手指点一下
解决方案 »
- C# FindControl()的问题?
- 关于asp.net中Ajax调用服务器端方法问题分析
- 读取MODEL层,读取相同的数据,该如何处理这个数据库连接问题!高手解决问题,超急,在线等
- 如何把浮动框架的高设置为自动的
- asp.net 如何屏蔽在文本框中输入 alert 之类代码。 在线等,急
- 设置完成,获得嵌入代码,那个嵌入式代码怎么使用呀?
- 邮件编码问题
- 关于B/S结构绘制流程图问题,欢迎大家来讨论!!!!
- datagrid嵌套checkbox的问题
- aspx文件和目录问题
- 上传图片的问题,点击浏览选择图片后就可以在image框显示图片,不要在点击上传
- 有没有可能用后台代码隐藏一个表格,因为我想在读数据库,发现数据不存在的时候隐藏表格。
Dim Doc As MSHTML.HTMLDocument
Dim flag As Boolean
Private Sub Command1_Click()
flag = False
WebBrowser1.Navigate2 Text1.Text
End SubPrivate Sub Command2_Click()
Dim f As Object
Dim i As Integer
For i = 1 To 3
Set Doc = WebBrowser1.document
Set f = Doc.All("Form1")
flag = False
f.All("__EVENTTARGET").Value = "dgrdResultados1$_ctl54$_ctl" + CStr(i)
f.All("__EVENTARGUMENT").Value = ""
Debug.Print i
Debug.Print f.All("__EVENTTARGET").Value
Debug.Print f.All("__EVENTARGUMENT").Value
Call f.submit
While flag = False
DoEvents
Wend
Next
End SubPrivate Sub Form_Load()
ctl = "dgrdResultados1$_ctl54$_ctl"
End SubPrivate Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
flag = True
MsgBox "ok"
End Sub
Dim Doc As MSHTML.HTMLDocument
Dim script As MSHTML.HTMLWindow2
Dim ctl As String
Dim flag As BooleanPrivate Sub Command1_Click()
flag = False
WebBrowser1.Navigate2 "http://www.fotocasa.es/busq/resultados.aspx?idTipoInmueble=2&idTipoOferta=2&idProvincia=27&idZona1=0&idZona2=0&idBarrio=0&idOtrasZonas=0&IdPoblacion=0&idDistrito=-2&Precio=0&Superficie=0&nHabitaciones=0&idTipoVivienda=0&x=50&y=9
End Sub"Private Sub Command2_Click()
Dim f As Object
Dim i As Integer
For i = 1 To 4 '这里轮询4页,你可以修改它
flag = False
Call WebBrowser1.document.parentWindow.execScript("__doPostBack('dgrdResultados1$_ctl54$_ctl" & CStr(i) & "', '')", "javascript")
Debug.Print i
While flag = False
DoEvents
Wend
Next
End SubPrivate Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
flag = True
MsgBox "ok"
End Sub
Dim Doc As MSHTML.HTMLDocument
Dim script As MSHTML.HTMLWindow2
Dim ctl As String
Dim flag As BooleanPrivate Sub Command1_Click()
flag = False
WebBrowser1.Navigate2 "http://www.fotocasa.es/busq/resultados.aspx?idTipoInmueble=2&idTipoOferta=2&idProvincia=27&idZona1=0&idZona2=0&idBarrio=0&idOtrasZonas=0&IdPoblacion=0&idDistrito=-2&Precio=0&Superficie=0&nHabitaciones=0&idTipoVivienda=0&x=50&y=9"
End SubPrivate Sub Command2_Click()
Dim f As Object
Dim i As Integer
For i = 1 To 4 '这里轮询4页,你可以修改它
flag = False
Call WebBrowser1.document.parentWindow.execScript("__doPostBack('dgrdResultados1$_ctl54$_ctl" & CStr(i) & "', '')", "javascript")
Debug.Print i
While flag = False
DoEvents
Wend
Next
End SubPrivate Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
flag = True
MsgBox "ok"
End Sub
欢迊来到麦高网-私活兼职首选平台 www.mgao.net
我程序的本意思就是用HttpWebRequest去抓取他网站上我所需要的信息,我现在已经能成功地抓取到第一页我所需要的信息,现在我想抓取第二页(因为其网站的URL第一页和第二页一样,所以我没法抓到第二页)
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemnethttpwebrequestclassgetrequeststreamtopic.htm
<?php
set_time_limit(0);
$url = "http://www.fotocasa.es/busq/resultados.aspx?idTipoInmueble=2&idTipoOferta=2&idProvincia=27&idZona1=0&idZona2=0&idBarrio=0&idOtrasZonas=0&IdPoblacion=0&idDistrito=-2&Precio=0&Superficie=0&nHabitaciones=0&idTipoVivienda=0&x=50&y=9";
$file = file_get_contents($url);//取__VIEWSTATE
if(preg_match_all("|__VIEWSTATE\'?\"?\s+value\s*=\s*\"?\"(.+?)\"|is",$file,$viewStates))
{
$viewState = $viewStates[1][0];
}//取得总页数
$page = 1;
if(preg_match_all("|javascript:__doPostBack\(\'dgrdResultados1$_ctl54$_ctl(.+?)\',\'\'\)\"|is",$file,$pages))
{
echo "go 2222 ";
print_r($pages[1]);
}
for($page=0;$page<7;$page++)
{
if($page != 0)
{ $file = file_get_contents($url);//还是取得一样的结果啊
}
if(preg_match_all("|<tr\s+onClick\s*=\s*\"?\'?\s*submitar\(\s*\'?([0-9]+)\'?\s*[^)]+\)[^>]+>(.*?)</tr>|is",$file,$matches))
{
for($i=0;$i<count($matches[2]);$i++)
{
//echo $matches[2][$i];
if(preg_match_all("|<td\s+[^>]*>(.*?)</td><td\s+[^>]*>(.*?)</td><td\s+[^>]*>(.*?)</td><td\s+[^>]*>(.*?)</td><td\s+[^>]*>(.*?)</td><td\s+[^>]*>(.*?)</td><td\s+[^>]*>(.*?)</td><td\s+[^>]*>(.*?)</td>|is",$matches[2][$i],$match1))
{
for($j=0;$j<count($match1[1]);$j++)
{
$location = $match1[2][$j];
$type = $match1[3][$j];
$roomNum = $match1[4][$j];
$area = $match1[5][$j];
$plant = $match1[6][$j];
$price = $match1[7][$j];
$state = $match1[8][$j];
//写入数据库
echo $location;
echo " ";
echo $type;
echo " ";
echo $roomNum;
echo " ";
echo $area ;
echo " ";
echo $plant;
echo " ";
echo $price;
echo " ";
echo $state;
echo "<br><br>";
}
}
}
}
//自动提交到下一个页面? 怎么样取下一页的数据呢?
?>
<form name="Form1" action="<?=$url?>" method="post">
<input type="hidden" name="__EVENTTARGET" value="" >
<input type="hidden" name="__EVENTARGUMENT" value="">
<input type="hidden" name="__VIEWSTATE" value="<?=$viewState?>">
</form>
<script language="javascript" type="text/javascript">
<!--
eventTarget = "dgrdResultados1$_ctl54$_ctl"+"<?=$page?>";
var theform;
if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
theform = document.Form1;
}
else {
theform = document.forms["Form1"];
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
// -->
</script>
<?php
}
?>