代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Asp.NET
】
自动登录网页,浏览页面
作者:
瑞祺
/ 发布于
2017/2/20
/
595
需求:客户的数据同时存在在另外一个不可控的系统中,需要和当前系统同步。 思路:自动登录另外一个系统,然后抓取数据,同步到本系统中。 技术点:模拟用户登录;保存登录状态;抓取数据
/// <summary> /// visit the target url /// </summary> /// <param name="targetURL"></param> /// <param name="cc">this is for keeping cookies and sessions</param> /// <param name="param">this is the data need post inside form</param> /// <returns>html page</returns> public static string PostAndGetHTML(string targetURL,CookieContainer cc,Hashtable param) { //prepare the submit data string formData = ""; foreach (DictionaryEntry de in param) { formData += de.Key.ToString() + "=" + de.Value.ToString() + "&"; } if (formData.Length > 0) formData = formData.Substring(0, formData.Length - 1); //remove last '&' ASCIIEncoding encoding = new ASCIIEncoding(); byte[] data = encoding.GetBytes(formData); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetURL); request.Method = "POST"; //post request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)"; Stream newStream = request.GetRequestStream(); newStream.Write(data, 0, data.Length); newStream.Close(); request.CookieContainer = cc; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); cc.Add(response.Cookies); Stream stream = response.GetResponseStream(); string result = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd(); return result; } public static DataTable ConvertToDT(DataTable dt, string tableHTML) { int lastTD = tableHTML.ToLower().LastIndexOf("</td>"); int firstRow = tableHTML.ToLower().IndexOf("<tr") + 3;//after ""<tr int index = tableHTML.ToLower().IndexOf("<tr", firstRow) + 3;//after ""<tr while (index < lastTD) { DataRow dr = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { string value = ""; int startTD = tableHTML.ToLower().IndexOf("<td", index) + 3;//after "<td" int endTD = tableHTML.ToLower().IndexOf("</td>", startTD); if (endTD < 0) break; string tdStr = tableHTML.Substring(startTD, endTD - startTD); //remove <> and others tdStr = tdStr.Replace("", "").Replace("\t", "").Replace("\r", ""); string[] v = tdStr.Split('<', '>'); for (int j = 0; j < v.Length; j++) { j++; if (v[j].Trim() != "") { value = v[j].Trim(); break; } } // dr[i] = value; index = endTD; } dt.Rows.Add(dr); } return dt; }
试试其它关键字
同语言下
.
gzip压缩
.
实现http多线程断点续传下载文件
.
实现多线程断点续传下载大文件
.
生成字符串的 CheckSum
.
根据 UserAgent 获取浏览器的类型和版本
.
根据 Agent 判断是否是智能手机
.
隐藏手机号中间四位为*方法
.
合并图片(二维码和其他图片合并)
.
ASP.NET CORE中判断是否移动端打开网页
.
ASP.NET(C#)实现页面计时(定时)自动跳转
可能有用的
.
gzip压缩
.
实现http多线程断点续传下载文件
.
实现多线程断点续传下载大文件
.
生成字符串的 CheckSum
.
根据 UserAgent 获取浏览器的类型和版本
.
根据 Agent 判断是否是智能手机
.
隐藏手机号中间四位为*方法
.
合并图片(二维码和其他图片合并)
.
ASP.NET CORE中判断是否移动端打开网页
.
ASP.NET(C#)实现页面计时(定时)自动跳转
瑞祺
贡献的其它代码
(
25
)
.
判断某个点是否在所画范围内(多边形/圆形)
.
1_1000之间的奇数之和
.
SqlServer存储过程中使用事务
.
设置Select按文本或按值选中
.
读取/更新Oracle数据库blob字段
.
取得MAC地址
.
自动登录网页,浏览页面
.
查看hive 表在hdfs上的存储路径
.
case when then else end 应用
.
金额元分之间转换工具类
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3