我需要取“http://edi.easipass.com/dataportal/q.do?qn=dp_export_shipinfo”这个页面,点确定以后出来的,分页的所有数据。应该怎么写呢?
c#windows窗体
18 个解决方案
#1
使用webbrowser控件
#2
抓包分析post/get提交的数据,然后模拟这个提交过程,获取后续页面内容
#3
有相关例子或者代码吗?
#4
还是没有人给回答啊!
#9
打不开啊 !
#10
用webclient去把网页的html下载下来吧
#11
用webbrowser
#12
点击确定之后,会跳转到另一个页面上,你会发现浏览器的地址变化了,
http://edi.easipass.com/dataportal/query.do?
vessel1=111&vess_call1=222&voyage1=333&carr_code1=444&ship_agen1=555&berth1=&esti_sail1=&esti_sail2=&qid=402803af0ecb1a4c010ecb1bc2bb00a0&pagesize=30&submit=%E6%9F%A5%E8%AF%A2
从连接上的内容可以看出这个URL你可以自己组装出来
http://edi.easipass.com/dataportal/query.do?vessel1=船名&vess_call1=船名呼号......
然后根据这个组装出来的URL获取该网页的源代码,解析源代码获取你想要的内容
http://edi.easipass.com/dataportal/query.do?
vessel1=111&vess_call1=222&voyage1=333&carr_code1=444&ship_agen1=555&berth1=&esti_sail1=&esti_sail2=&qid=402803af0ecb1a4c010ecb1bc2bb00a0&pagesize=30&submit=%E6%9F%A5%E8%AF%A2
从连接上的内容可以看出这个URL你可以自己组装出来
http://edi.easipass.com/dataportal/query.do?vessel1=船名&vess_call1=船名呼号......
然后根据这个组装出来的URL获取该网页的源代码,解析源代码获取你想要的内容
#13
我是想把这些数据定期取下来以后,存到数据库里面,因为平时输入船名等,会自动提示航次多少,。不用每次去网站上查询。
另外还想实现的是,别人的一个网站,我有用户名和密码,实现系统模拟登录,自动录入相关数据,然后点保存提交。
另外还想实现的是,别人的一个网站,我有用户名和密码,实现系统模拟登录,自动录入相关数据,然后点保存提交。
#14
最好有例子可以给看下。
#15
例子是没有,但是很久之前有做过类似的程序,就是从他人网站上获取我们有用的数据。
主要思路是:
1、获取出来他的所有的html文件。
2.分析html文件,看我们想用到的数据在在什么节点下,
<tr height="21">
<td align="left" bgcolor="#EEEEEE">TIRUA</td>
<td align="left" bgcolor="#EEEEEE">D5AD8</td>
<td align="left" bgcolor="#EEEEEE">1204</td>
<td align="left" bgcolor="#EEEEEE">MSK</td>
<td align="left" bgcolor="#EEEEEE">联代</td>
<td align="left" bgcolor="#EEEEEE">洋山一期</td>
<td align="left" bgcolor="#EEEEEE">20121023</td>
<td align="left" bgcolor="#EEEEEE">9612882</td>
<td bgcolor="#EEEEEE"><a href='query.do?qn=dp_export_ship_info_port&vessel=TIRUA&voyage=1204&estisail=20121023'/>挂靠港</a> <a href='query.do?qn=dp_export_agent&EXPORT_AGENT_VESSEL=TIRUA&EXPORT_AGENT_VOYAGE=1204'>共用舱位</a></td>
</tr>
。这是一组,在用字符串截取,截取我们有用的信息即可。
主要思路是:
1、获取出来他的所有的html文件。
2.分析html文件,看我们想用到的数据在在什么节点下,
<tr height="21">
<td align="left" bgcolor="#EEEEEE">TIRUA</td>
<td align="left" bgcolor="#EEEEEE">D5AD8</td>
<td align="left" bgcolor="#EEEEEE">1204</td>
<td align="left" bgcolor="#EEEEEE">MSK</td>
<td align="left" bgcolor="#EEEEEE">联代</td>
<td align="left" bgcolor="#EEEEEE">洋山一期</td>
<td align="left" bgcolor="#EEEEEE">20121023</td>
<td align="left" bgcolor="#EEEEEE">9612882</td>
<td bgcolor="#EEEEEE"><a href='query.do?qn=dp_export_ship_info_port&vessel=TIRUA&voyage=1204&estisail=20121023'/>挂靠港</a> <a href='query.do?qn=dp_export_agent&EXPORT_AGENT_VESSEL=TIRUA&EXPORT_AGENT_VOYAGE=1204'>共用舱位</a></td>
</tr>
。这是一组,在用字符串截取,截取我们有用的信息即可。
#16
第一页:
http://edi.easipass.com/dataportal/query.do?qid=402803af0ecb1a4c010ecb1bc2bb00a0&esti_sail1=&vess_call1=&voyage1=&vessel1=&carr_code1=&esti_sail2=&berth1=&ship_agen1=&pagesize=30&page=1
第二页:
http://edi.easipass.com/dataportal/query.do?qid=402803af0ecb1a4c010ecb1bc2bb00a0&esti_sail1=&vess_call1=&voyage1=&vessel1=&carr_code1=&esti_sail2=&berth1=&ship_agen1=&pagesize=30&page=2
第三页:
http://edi.easipass.com/dataportal/query.do?qid=402803af0ecb1a4c010ecb1bc2bb00a0&esti_sail1=&vess_call1=&voyage1=&vessel1=&carr_code1=&esti_sail2=&berth1=&ship_agen1=&pagesize=30&page=3
发现规律了没,这就好办了啊
#17
给你一个我写的获取HTML的类,你可以保存起来。
直接发送请求即可:
调用:
HttpWebRequest更多用法参见MSDN:http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest%28v=VS.80%29.aspx
直接发送请求即可:
public static string contentType = "application/x-www-form-urlencoded";
public static string accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-silverlight-2-b1, */*";
public static string userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Zune 4.7; BOIE9;ZHCN)";
public static string referer = "";
/// <summary>
/// 获取HTML
/// </summary>
/// <param name="url"></param>
/// <param name="cookieContainer"></param>
/// <param name="method">GET or POST</param>
/// <param name="postData">like "username=admin&password=123"</param>
/// <returns></returns>
public static string GetHtml(string url, CookieContainer cookieContainer, string method = "GET", string postData = "")
{
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
try
{
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentType = contentType;
httpWebRequest.Referer = referer;
httpWebRequest.Accept = accept;
httpWebRequest.UserAgent = userAgent;
httpWebRequest.Method = method;
httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;
if (method.ToUpper() == "POST")
{
byte[] byteRequest = Encoding.Default.GetBytes(postData);
Stream stream = httpWebRequest.GetRequestStream();
stream.Write(byteRequest, 0, byteRequest.Length);
stream.Close();
}
httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
string html = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
httpWebRequest.Abort();
httpWebResponse.Close();
return html;
}
catch (Exception)
{
return string.Empty;
}
}
}
调用:
string result = HttpHelper.GetHtml("http://edi.easipass.com/dataportal/query.do?vessel1=&vess_call1=&voyage1=&carr_code1=&ship_agen1=&berth1=&esti_sail1=&esti_sail2=&qid=402803af0ecb1a4c010ecb1bc2bb00a0&pagesize=30&submit=%E6%9F%A5%E8%AF%A2", new System.Net.CookieContainer());
Console.WriteLine(result);//输出查询后页面的HTML,查询条件在URL参数中设置。
HttpWebRequest更多用法参见MSDN:http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest%28v=VS.80%29.aspx
#18
上面的代码少了一句类的声明:public class HttpHelper
这是一个get请求,直接HttpWebRequest发送请求到浏览器上的地址就可以了。
这是一个get请求,直接HttpWebRequest发送请求到浏览器上的地址就可以了。
#1
使用webbrowser控件
#2
抓包分析post/get提交的数据,然后模拟这个提交过程,获取后续页面内容
#3
有相关例子或者代码吗?
#4
还是没有人给回答啊!
#5
#6
#7
C#远程抓取网站内容的代码
http://www.eeeey.net/Detail.aspx?ID=58697&Gid=102
http://www.eeeey.net/Detail.aspx?ID=58697&Gid=102
#8
#9
打不开啊 !
#10
用webclient去把网页的html下载下来吧
#11
用webbrowser
#12
点击确定之后,会跳转到另一个页面上,你会发现浏览器的地址变化了,
http://edi.easipass.com/dataportal/query.do?
vessel1=111&vess_call1=222&voyage1=333&carr_code1=444&ship_agen1=555&berth1=&esti_sail1=&esti_sail2=&qid=402803af0ecb1a4c010ecb1bc2bb00a0&pagesize=30&submit=%E6%9F%A5%E8%AF%A2
从连接上的内容可以看出这个URL你可以自己组装出来
http://edi.easipass.com/dataportal/query.do?vessel1=船名&vess_call1=船名呼号......
然后根据这个组装出来的URL获取该网页的源代码,解析源代码获取你想要的内容
http://edi.easipass.com/dataportal/query.do?
vessel1=111&vess_call1=222&voyage1=333&carr_code1=444&ship_agen1=555&berth1=&esti_sail1=&esti_sail2=&qid=402803af0ecb1a4c010ecb1bc2bb00a0&pagesize=30&submit=%E6%9F%A5%E8%AF%A2
从连接上的内容可以看出这个URL你可以自己组装出来
http://edi.easipass.com/dataportal/query.do?vessel1=船名&vess_call1=船名呼号......
然后根据这个组装出来的URL获取该网页的源代码,解析源代码获取你想要的内容
#13
我是想把这些数据定期取下来以后,存到数据库里面,因为平时输入船名等,会自动提示航次多少,。不用每次去网站上查询。
另外还想实现的是,别人的一个网站,我有用户名和密码,实现系统模拟登录,自动录入相关数据,然后点保存提交。
另外还想实现的是,别人的一个网站,我有用户名和密码,实现系统模拟登录,自动录入相关数据,然后点保存提交。
#14
最好有例子可以给看下。
#15
例子是没有,但是很久之前有做过类似的程序,就是从他人网站上获取我们有用的数据。
主要思路是:
1、获取出来他的所有的html文件。
2.分析html文件,看我们想用到的数据在在什么节点下,
<tr height="21">
<td align="left" bgcolor="#EEEEEE">TIRUA</td>
<td align="left" bgcolor="#EEEEEE">D5AD8</td>
<td align="left" bgcolor="#EEEEEE">1204</td>
<td align="left" bgcolor="#EEEEEE">MSK</td>
<td align="left" bgcolor="#EEEEEE">联代</td>
<td align="left" bgcolor="#EEEEEE">洋山一期</td>
<td align="left" bgcolor="#EEEEEE">20121023</td>
<td align="left" bgcolor="#EEEEEE">9612882</td>
<td bgcolor="#EEEEEE"><a href='query.do?qn=dp_export_ship_info_port&vessel=TIRUA&voyage=1204&estisail=20121023'/>挂靠港</a> <a href='query.do?qn=dp_export_agent&EXPORT_AGENT_VESSEL=TIRUA&EXPORT_AGENT_VOYAGE=1204'>共用舱位</a></td>
</tr>
。这是一组,在用字符串截取,截取我们有用的信息即可。
主要思路是:
1、获取出来他的所有的html文件。
2.分析html文件,看我们想用到的数据在在什么节点下,
<tr height="21">
<td align="left" bgcolor="#EEEEEE">TIRUA</td>
<td align="left" bgcolor="#EEEEEE">D5AD8</td>
<td align="left" bgcolor="#EEEEEE">1204</td>
<td align="left" bgcolor="#EEEEEE">MSK</td>
<td align="left" bgcolor="#EEEEEE">联代</td>
<td align="left" bgcolor="#EEEEEE">洋山一期</td>
<td align="left" bgcolor="#EEEEEE">20121023</td>
<td align="left" bgcolor="#EEEEEE">9612882</td>
<td bgcolor="#EEEEEE"><a href='query.do?qn=dp_export_ship_info_port&vessel=TIRUA&voyage=1204&estisail=20121023'/>挂靠港</a> <a href='query.do?qn=dp_export_agent&EXPORT_AGENT_VESSEL=TIRUA&EXPORT_AGENT_VOYAGE=1204'>共用舱位</a></td>
</tr>
。这是一组,在用字符串截取,截取我们有用的信息即可。
#16
第一页:
http://edi.easipass.com/dataportal/query.do?qid=402803af0ecb1a4c010ecb1bc2bb00a0&esti_sail1=&vess_call1=&voyage1=&vessel1=&carr_code1=&esti_sail2=&berth1=&ship_agen1=&pagesize=30&page=1
第二页:
http://edi.easipass.com/dataportal/query.do?qid=402803af0ecb1a4c010ecb1bc2bb00a0&esti_sail1=&vess_call1=&voyage1=&vessel1=&carr_code1=&esti_sail2=&berth1=&ship_agen1=&pagesize=30&page=2
第三页:
http://edi.easipass.com/dataportal/query.do?qid=402803af0ecb1a4c010ecb1bc2bb00a0&esti_sail1=&vess_call1=&voyage1=&vessel1=&carr_code1=&esti_sail2=&berth1=&ship_agen1=&pagesize=30&page=3
发现规律了没,这就好办了啊
#17
给你一个我写的获取HTML的类,你可以保存起来。
直接发送请求即可:
调用:
HttpWebRequest更多用法参见MSDN:http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest%28v=VS.80%29.aspx
直接发送请求即可:
public static string contentType = "application/x-www-form-urlencoded";
public static string accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-silverlight-2-b1, */*";
public static string userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Zune 4.7; BOIE9;ZHCN)";
public static string referer = "";
/// <summary>
/// 获取HTML
/// </summary>
/// <param name="url"></param>
/// <param name="cookieContainer"></param>
/// <param name="method">GET or POST</param>
/// <param name="postData">like "username=admin&password=123"</param>
/// <returns></returns>
public static string GetHtml(string url, CookieContainer cookieContainer, string method = "GET", string postData = "")
{
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
try
{
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentType = contentType;
httpWebRequest.Referer = referer;
httpWebRequest.Accept = accept;
httpWebRequest.UserAgent = userAgent;
httpWebRequest.Method = method;
httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;
if (method.ToUpper() == "POST")
{
byte[] byteRequest = Encoding.Default.GetBytes(postData);
Stream stream = httpWebRequest.GetRequestStream();
stream.Write(byteRequest, 0, byteRequest.Length);
stream.Close();
}
httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
string html = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
httpWebRequest.Abort();
httpWebResponse.Close();
return html;
}
catch (Exception)
{
return string.Empty;
}
}
}
调用:
string result = HttpHelper.GetHtml("http://edi.easipass.com/dataportal/query.do?vessel1=&vess_call1=&voyage1=&carr_code1=&ship_agen1=&berth1=&esti_sail1=&esti_sail2=&qid=402803af0ecb1a4c010ecb1bc2bb00a0&pagesize=30&submit=%E6%9F%A5%E8%AF%A2", new System.Net.CookieContainer());
Console.WriteLine(result);//输出查询后页面的HTML,查询条件在URL参数中设置。
HttpWebRequest更多用法参见MSDN:http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest%28v=VS.80%29.aspx
#18
上面的代码少了一句类的声明:public class HttpHelper
这是一个get请求,直接HttpWebRequest发送请求到浏览器上的地址就可以了。
这是一个get请求,直接HttpWebRequest发送请求到浏览器上的地址就可以了。