自动获取代理IP信息的例子,含代码,分享哦,
/// <summary>
/// 读取URL数据内容
/// </summary>
/// <param name="url">网址</param>
/// <returns>网站文本内容</returns>
public string HttpGetText(string url)
{
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create(url);
Request.Method = "GET";
Request.ContentType = @"application/x-www-form-urlencoded";
Request.Accept = @"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
Request.Headers.Add(HttpRequestHeader.AcceptLanguage, @"Accept-Language:zh-CN,zh;q=0.8");
Request.UserAgent = @"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0";
Request.Proxy = proxy;
var stream = Request.GetResponse().GetResponseStream();
var read = new StreamReader(stream);
var json = read.ReadToEnd();
read.Close();
stream.Close(); System.Diagnostics.Debug.WriteLine("".PadRight(20, '='));
System.Diagnostics.Debug.WriteLine(json);
System.Diagnostics.Debug.WriteLine("".PadRight(20, '='));
return json;
} public class IPs {
public List<proxy> items = new List<proxy>(); public class proxy {
public string ip;
public int port;
public string address;
public int speed;
public int life;//持续分钟数
public DateTime check_time;
}
}
private void button1_Click(object sender, EventArgs e)
{
var html= HttpGetText("http://www.xicidaili.com/nt");
int i1= html.IndexOf("<table id=\"ip_list\">");
int i2= html.IndexOf("</table>");
string ip_list = html.Substring(i1, i2 - i1+ "</table>".Length);
var find = new Regex(@"<tr.*?>\s*?<td.*?>.*?</td>\s*?<td.*?>(?<ip>.*?)</td>\s*?<td.*?>(?<port>.*?)</td>\s*?<td.*?>\s*?<a.*?>(?<address>.*?)</a>\s*?</td>.*?width:(?<speed>.*?)%.*?<td>(?<life>.*?)</td>.*?<td>(?<check_time>.*?)</td>.*?</tr>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
var ips= find.Matches(ip_list);
listView1.BeginUpdate();
foreach (System.Text.RegularExpressions.Match item in ips) {
try
{
var ip = new IPs.proxy();
ListViewItem lvi = new ListViewItem(item.Groups["ip"].Value); ip.ip = item.Groups["ip"].Value;
lvi.SubItems.Add(item.Groups["port"].Value); ip.port = Convert.ToInt32(item.Groups["port"].Value);
lvi.SubItems.Add(item.Groups["address"].Value); ip.address = item.Groups["address"].Value;
lvi.SubItems.Add(item.Groups["speed"].Value); ip.speed = Convert.ToInt32(item.Groups["speed"].Value);
lvi.SubItems.Add(item.Groups["life"].Value); ip.life = conv(item.Groups["life"].Value);
lvi.SubItems.Add(item.Groups["check_time"].Value); ip.check_time = Convert.ToDateTime(item.Groups["check_time"].Value);
listView1.Items.Add(lvi);
IPaddress.items.Add(ip);
}
catch {
LogAdd("转换IP地址信息出错 " + item.Value);
}
}
listView1.EndUpdate();
int conv(string life) {
int a = 1;
if (life.Contains("天")) {
a = 60 * 24;
life = life.Replace("天", "");
}else if (life.Contains("分钟"))
{
a =1;
life = life.Replace("分钟", "");
}
else if (life.Contains("小时"))
{
a = 60;
life = life.Replace("小时", "");
}
return Convert.ToInt32(life)*a;
}
}
关键代码就是获取指定网页里的IP代理信息,然后用正则表达式提取出来
本来想着直接将html转换为xml,谁知它网页写的不标准,转换不成功
只有用正则来查找了,效果不错~
代码运行环境: vs2017
当然老版本也可以,将局部函数代码放到外部即可。
效果图:

关键代码部分:
var html= HttpGetText("http://www.xicidaili.com/nt");
int i1= html.IndexOf("<table id=\"ip_list\">");
int i2= html.IndexOf("</table>");
string ip_list = html.Substring(i1, i2 - i1+ "</table>".Length);
var find = new Regex(@"<tr.*?>\s*?<td.*?>.*?</td>\s*?<td.*?>(?<ip>.*?)</td>\s*?<td.*?>(?<port>.*?)</td>\s*?<td.*?>\s*?<a.*?>(?<address>.*?)</a>\s*?</td>.*?width:(?<speed>.*?)%.*?<td>(?<life>.*?)</td>.*?<td>(?<check_time>.*?)</td>.*?</tr>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
var ips= find.Matches(ip_list);
正则表达式推荐一个网址及学习工具:
http://deerchao.net/tutorials/regex/regex.htm#charclass
我本人也记不住 正则表达式 ,需要用的时候现查。
自动获取代理IP信息的例子,含代码,分享哦,的更多相关文章
- python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客
python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客 undefined Python多线程抓取代理服务器 | Linux运维笔记 undefined java如 ...
- 分享一个获取代理ip的python函数
分享一个获取代理ip的python函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #coding:utf-8 from bs4 import Beaut ...
- 通过AWS的DHCP自动获取的IP地址是否会发生改变?
针对您的问题,分析如下:1.在一个VPC内,通过AWS的DHCP自动获取的IP地址,在如何情况下会发生改变?例如我把vpc的内所有100个ec2实例全部关闭,再全部重新打开,是否会发生IP地址变化的情 ...
- Python学习笔记六(免费获取代理IP)
为获取网上免费代理IP,闲的无聊,整合了一下,免费从三个代理网站获取免费代理IP,目的是在某一代理网站被限制时,仍可从可以访问的其他网站上获取代理IP.亲测可用哦!^_^ 仅供大家参考,以下脚本可添 ...
- python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)
python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性) 目录 随机User-Agent 获取代理ip 检测代理ip可用性 随机User-Agent fake_usera ...
- Python 之自动获取公网IP
Python 之自动获取公网IP 2017年9月30日 文档下载:https://wenku.baidu.com/view/ff40aef7f021dd36a32d7375a417866fb84ac0 ...
- Linux:自动获取静态IP地址,清空iptable,修改selinux脚本
自动获取静态IP地址,清空iptable,修改selinux脚本 环境:VMware 平台:centos6.8全新 功能: 1)应用ifconfig -a,route -n,cat /etc/reso ...
- 解决:win8.1 oepnvpn客户端 redirect-gateway def1无效,自动获取的IP没有网关问题
解决:win8.1 oepnvpn客户端 redirect-gateway def1无效,自动获取的IP没有网关问题 该问题是操作系统权限问题,需要将程序设置为以管理员模式运行和以windows7兼容 ...
- Python3.x:获取代理ip以及使用
Python3.x:获取代理ip以及使用 python爬虫浏览器伪装 #导入urllib.request模块 import urllib.request #设置请求头 headers=("U ...
随机推荐
- R语言入门(一)简介安装
数据挖掘常用的语言有R语言,python,SQL等,其中R语言最受欢迎.(注:SQL Server包含微软研究院开发的两种数据挖掘算法:Microsoft决策树和Microsoft聚集,此外还支持第三 ...
- 网络传入安全jwts
使用json web token 发表于Aug 13 2014 由来 做了这么长时间的web开发,从JAVA EE中的jsf,spring,hibernate框架,到spring web MVC,到用 ...
- Modbus软件开发实战指南 之 开发自己的Modbus Poll工具 - 1
在开发Modbus程序的过程中,也可以发现经常需要使用诸如Modbus Poll和Modbus Slave等辅助调试工具, 用于验证MODBUS通讯消息是否正确.但是,Modbus Poll和Modb ...
- vue学习笔记(一)关于事件冒泡和键盘事件 以及与Angular的区别
一.事件冒泡 方法一.使用event.cancelBubble = true来组织冒泡 <div @click="show2()"> <input type=&q ...
- android学习——环境的搭建
1.安装JDK(java开发工具箱) 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html(根据自己需要下载) ...
- HTML标签自定义属性
本文章转载至:http://www.cnblogs.com/luoyanli/archive/2012/10/17/2727886.html HTML标签可以自定义属性,但是我们要考虑其在IE.Fir ...
- 关于DLL的学习
1.前言: 人总归还是要有梦想的,不然跟咸鱼有什么区别.这一周给自己定下了研究DLL的任务还是要逼自己完成的呀,上了一天的党校,游戏也不打在这里写博,心疼自己.话说为什么要给自己下这样一个任务呢,是因 ...
- 解决MVC模型验证在IE 6 7下不起作用或者报错
文件版本列出: Jquery版本1.7.1 jQuery Validation 版本1.9.0 (VS2012创建MVC项目自动生成的版本) 最好VS2012创建MVC项目自动生成的版本,而不是VS2 ...
- iOS开发之Block
1.定义 (1) Block是OC中的一种数据类型,在iOS开发中被广泛使用 (2) ^是Block的特有标记 (3) Block的实现代码包含在{}之间 (4) 大多情况下,以内联inline函数的 ...
- 车大棒浅谈jQuery源码(二)
前言 本来只是一个自己学习jQuery笔记的简单分享,没想到获得这么多人赏识.我自己也是傻呵呵的一脸迷茫,感觉到受宠若惊. 不过还是有人向批判我的文章说,这是基本知识点,完全跟jQuery源码沾不上边 ...