关于下载网页页面的问题.
http://www.fj10150.com/user/querytonebytype.do?orderBy=10&fatherdirindex=28&fatherdirname=民族音乐&categoryname=民族音乐&category=362.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#