我正在制作代理抓取程序,我需要在数组中找到代理
以下是我想要离开这一行的一个例子:
document.write('77.237.138.51')
我想删除document.write('" and "')
,因此它只显示代理
这是我目前的代码:
client.DownloadFile("http://www.gatherproxy.com/sockslist", "source.txt");
string [] lines = File.ReadAllLines("source.txt");
string start = "document.write('";
string end = "')";
现在我该怎么做才能删除开始和结束并返回中间元素(代理)
回复Domysee
using (WebClient client = new WebClient())
client.DownloadFile("http://www.gatherproxy.com/sockslist", "source.txt");
string[] lines = File.ReadAllLines("source.txt");
for (int i = 0; i < 1000; i++)
{
string[] ipAddresses = lines.Select(l => Regex.Match(l, @"(\d+\.){3}\d+").Value).ToArray();
i++;
string[] port = lines.Select(l => Regex.Match(l, @"(\d+\.){3}\d+").Value).ToArray();
Console.WriteLine(ipAddresses + ":" + port);
}
Console.ReadLine();
答案 0 :(得分:1)
您可以将Regex
用于此目的。
string[] ipAddresses = lines.Select(l => Regex.Match(l, @"(\d+\.){3}\d+").Value).ToArray();
正则表达式将提取与ip地址对应的位。
ipAddresses
是一个字符串数组。如果你将它与另一个字符串连接(正如你在Console.WriteLine(ipAddresses + ":" + port);
中所做的那样),将调用它的ToString
方法,即“System.String []”。
要输出ip地址,你必须迭代数组。
string[] lines = File.ReadAllLines("source.txt");
string[] ipAddresses = lines.Select(l => Regex.Match(l, @"(\d+\.){3}\d+").Value).ToArray();
for(int i = 0; i < ipAddresses.Length; i++){
Console.WriteLine(ipAddresses[i]);
}
答案 1 :(得分:0)
您可以使用LINQ:
string[] lines = File.ReadAllLines("source.txt");
string[] ipAddresses = lines.Select(line => String.Join("", line.SkipWhile(c => c != '\'')
.Skip(1)
.TakeWhile(c => c != '\'')))
.ToArray();