Тема: Рекурсивне завантаження сторінок C#
Привіт!
Моя програма зберігає локально html файл, знаходить в документі url адресу, знаходить ip а потім в файл 1 заносить url з однаковим ip а в 2 різні.
Підкажіть мені, будь ласка, як написати рекурсивну функцію яка б виконувала завантаження сторінок(url з 1 файлу) заповнюючи ті 2 файли. І виконати рекурсію n раз
Код програми:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using HtmlAgilityPack;
using System.Text.RegularExpressions;
using System.IO;
namespace Myrecursion
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) //дозвояє знати IP адеру по URL
{
var url = input.Text;
Uri myUri = new Uri(url);
var ip = Dns.GetHostAddresses(myUri.Host)[0];
label1.Text = ip.ToString();// ip address
}
private void button2_Click(object sender, EventArgs e)
{
string path = @"D:\test.html";
using (WebClient client = new WebClient()) //save page
{
WebClient webClient = new WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
webClient.DownloadFile(input.Text, path);
}
//для того, щоб отримати з html сторінки url адресу
string text = File.ReadAllText(path);
string patTemp = @"(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?";
foreach (Match item in Regex.Matches(text, patTemp))
{ /// url->ip
Uri myUri = new Uri(item.Value);
var ip = Dns.GetHostAddresses(myUri.Host)[0];
richTextBox1.Text += item.Value + " IP address: " + ip + "\n";
string tempIP = ip.ToString();
if (label1.Text != tempIP)
{
richTextBox3.Text += item.Value + "\n";
// richTextBox3.Text += item.Value + " IP address: " + ip + "\n";
File.WriteAllText(@"D:\zadanie4_1.txt", richTextBox2.Text);
}
else {
richTextBox2.Text += item.Value + "\n";
// richTextBox2.Text += item.Value + " IP address: " + ip + "\n";
File.WriteAllText(@"D:\zadanie4_2.txt", richTextBox3.Text);
}
}
}
private void button3_Click(object sender, EventArgs e)// tutaj próbowałam sama pisać, ale się nie udało
{
// var ans = 0;
// ans = Myfunk();//my func recursion
string mypath = @"D:\zadanie4_1.txt";
string[] text = File.ReadAllLines(mypath);
foreach (string value in text)
{
//richTextBox4.Text+=value+"\n";
// string[] text1 = File.ReadAllLines(value);
Uri myUri = new Uri(value);
var ip1 = Dns.GetHostAddresses(myUri.Host)[0];
string path = @"D:\recursion.html";
WebClient webClient = new WebClient();
webClient.DownloadFile(value, path);
// richTextBox4.Text += value + " " + ip1 + "\n";
// string test = File.ReadAllText(value);
}
}
private static void Myfunk()
{
//string mypath = @"D:\zadanie4_1.html";
//string text = File.ReadAllText(mypath);
//foreach (int myrec in text) {
//}
}
}
}