当前位置:编程学习 > C#/ASP.NET >>

关于下载网页页面的问题.

http://www.fj10150.com/user/querytonebytype.do?orderBy=10&fatherdirindex=28&fatherdirname=民族音乐&categoryname=民族音乐&category=36
2.http://www.fj10150.com/user/querytonebytype.do?page=4
要获取2的源代码必须在网页1的基础上,就是先打开1,在转到2才行。

请问如何用WebRequest 获取第二个页面的源代码,请高手指教!
--------------------编程问答--------------------
下载第一个的源代码...
用正则抓取
2.http://www.fj10150.com/user/querytonebytype.do?page=4

然后下载 --------------------编程问答-------------------- 请问如何用WebRequest 获取第二个页面的源代码
---------------------------------------------
参照这个
http://community.csdn.net/Expert/topic/5527/5527303.xml?temp=.3978388 --------------------编程问答-------------------- 误解我了,要抓取ajax技术开发的网页,第二页直接抓取的时候没有东西.

c# 代码..最好有个实例...感谢.. --------------------编程问答-------------------- http://www.fj10150.com/user/querytonebytype.do?orderBy=10&fatherdirindex=28&fatherdirname=民族音乐&categoryname=民族音乐&category=36

就下载这个的源码吧??
using System;
using System.Net;
using System.Text;
using System.IO;
using System.Windows.Forms;

namespace NameParser
{
/// <summary>
/// GetHttpSource 的摘要说明。
/// </summary>
public class GetHttpSource
{
public  GetHttpSource()
{
//
// TODO: 在此处添加构造函数逻辑
//


}

public static string GetHttpSourceValue(string a_strUrl)
{

string strResult;
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(new System.Uri(a_strUrl));
myReq.Method = "GET";
myReq.Accept = "*/*";
myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";

try
{
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();

string tmp = myReq.Headers.ToString();

Stream myStream = HttpWResp.GetResponseStream();

StreamReader sr = new StreamReader(myStream, Encoding.Default);
StringBuilder strBuilder = new StringBuilder();
while (-1 != sr.Peek())
{
strBuilder.Append(sr.ReadLine() + "\r\n");
}

strResult = strBuilder.ToString();
//StreamWriter sw = new StreamWriter("E:\\1.txt", false, Encoding.Default);
//sw.Write(strResult);


myStream.Close();
sr.Close();
//                sw.Close();
}
catch (Exception exp)
{
strResult = "错误:" + exp.Message;
}


return strResult;




//StreamWriter sw = new StreamWriter(SaveFileName(), false, Encoding.Default);
//sw.Write(body);
//sw.Close();
}
}
}

这个不可以吗?? --------------------编程问答-------------------- 这个是第一页,我想下的实第二页也就是http://www.fj10150.com/user/querytonebytype.do?page=4.这个action后的东西.
你点进这个网址看看就会知道我要下什么了,再次感谢帮助! --------------------编程问答-------------------- 我尝试过用 request.Referer 指定上一页不过不成功..

求达人.. --------------------编程问答-------------------- 确实很闹心..研究ing... --------------------编程问答-------------------- 对
我测试了
直接http://www.fj10150.com/user/querytonebytype.do?page=4

结果
0
Please input your name:
P

http://www.fj10150.com/user/querytonebytype.do?orderBy=10&fatherdirindex=28&fatherdirname=民族音乐&categoryname=民族音乐&category=36

也同样的结果


那你就要先发送登陆信息的cookie过去再下载了 --------------------编程问答-------------------- 慧聪网登录地址:http://b2b.hc360.com/rewrite-url/www/dl.html
用户名:mytestcs
密  码:aabbccdd
  

string url = "http://my.b2b.hc360.com/my/turbine/template/firstview,other_login.html";

string indata = @"LoginID=mytestcs&Passwd=aabbccdd&LoginChk=true&Submit=%B5%C7%A1%A1%A1%A1%C2%BC";

            string outdata=""; 

            CookieContainer myCookieContainer=new CookieContainer(); 
            //新建一个CookieContainer来存放Cookie集合 
            HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url); 
            //新建一个HttpWebRequest 
            myHttpWebRequest.ContentType="application/x-www-form-urlencoded"; 
            myHttpWebRequest.ContentLength=indata.Length; 
            myHttpWebRequest.Method="POST"; 
            myHttpWebRequest.CookieContainer=myCookieContainer; 
            //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer 
            Stream myRequestStream=myHttpWebRequest.GetRequestStream(); 
            StreamWriter myStreamWriter=new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312"));                 
            myStreamWriter.Write(indata); 
            //把数据写入HttpWebRequest的Request流 
            myStreamWriter.Close(); 
            myRequestStream.Close(); 

            //关闭打开对象 
            HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse(); 
            //新建一个HttpWebResponse 
            myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri); 
            //获取一个包含url的Cookie集合的CookieCollection 
            Stream myResponseStream=myHttpWebResponse.GetResponseStream(); 
            StreamReader myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312")); 
            outdata=myStreamReader.ReadToEnd(); 
            //把数据从HttpWebResponse的Response流中读出 
            myStreamReader.Close(); 
            myResponseStream.Close(); 
            Console.WriteLine(outdata); 
            //显示"登录" 
 
            //拿到了Cookie,再进行请求就能直接读取到登录后的内容了 
            myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url); 
            myHttpWebRequest.CookieContainer=myCookieContainer;//* 
            //刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证 
            myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse(); 
            myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);             
            myResponseStream=myHttpWebResponse.GetResponseStream(); 
            myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312")); 
            outdata=myStreamReader.ReadToEnd(); 
            myStreamReader.Close(); 
            myResponseStream.Close(); 
            Console.WriteLine(outdata);


参照这个 --------------------编程问答-------------------- 加我msn吧 daicaike@hotmail.com
我给你发短消息了,谢谢兄弟. --------------------编程问答-------------------- 我也经历了LZ这样的过程,刚开始用HTTPWEBREQUEST时有些网站的COOKIE方面会出问题,搞烦了就用SOCKET实现了.在HTTP HEADER里面加入COOKIE信息,每次RECEIVE的时候在HEADER里面提取SET-COOKIE信息,然后记录到一个COOKIE变量中,用这个实时变化的COOKIE去交互网页,绝对没有问题.另外,用SOCKET相对底层的技术,可以绕过一些网站的验证,哈哈,有兴趣加我QQ:631753663 我最近有新突破... --------------------编程问答-------------------- 谢谢兄弟,,没小弟没MSN --------------------编程问答-------------------- 谢谢randb鼓励

zhangliu_521我给你发站内短消息了,你可以去看看,还有我qq84375721可以+我 --------------------编程问答-------------------- 遇到相同问题,帮顶!!
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,