Stworzyłem prostego robota sieciowego, ale chcę dodać funkcję rekursji, aby każda strona, która jest otwarta, mogła uzyskać adresy URL na tej stronie, ale nie mam pojęcia, jak mogę to zrobić i chcę również zawierać wątki zrobić to szybciej tutaj jest mój kodProsty robot sieciowy w C#
namespace Crawler
{
public partial class Form1 : Form
{
String Rstring;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
WebRequest myWebRequest;
WebResponse myWebResponse;
String URL = textBox1.Text;
myWebRequest = WebRequest.Create(URL);
myWebResponse = myWebRequest.GetResponse();//Returns a response from an Internet resource
Stream streamResponse = myWebResponse.GetResponseStream();//return the data stream from the internet
//and save it in the stream
StreamReader sreader = new StreamReader(streamResponse);//reads the data stream
Rstring = sreader.ReadToEnd();//reads it to the end
String Links = GetContent(Rstring);//gets the links only
textBox2.Text = Rstring;
textBox3.Text = Links;
streamResponse.Close();
sreader.Close();
myWebResponse.Close();
}
private String GetContent(String Rstring)
{
String sString="";
HTMLDocument d = new HTMLDocument();
IHTMLDocument2 doc = (IHTMLDocument2)d;
doc.write(Rstring);
IHTMLElementCollection L = doc.links;
foreach (IHTMLElement links in L)
{
sString += links.getAttribute("href", 0);
sString += "/n";
}
return sString;
}
Głosuj, aby zamknąć jako pytanie niedostatecznie uporządkowane. Rozważ wyszukanie "robota sieciowego w języku C#" i dopracowanie zapytania, aby było bardziej ukierunkowane. –
Zdecydowanie nie chcesz używać rekurencji, ponieważ nie będziesz w stanie utrzymywać stanu Internetu na lokalnym stosie. Możesz użyć stosu, jak sugerował Tom, ale powinieneś odwrócić kolejność, w której dodajesz AbsoluteUris do być zaindeksowane, w przeciwnym razie rodzaj stosu sprawi, że będziesz indeksować od dołu strony i jeśli zamierzasz napisać przeszukiwacz, musisz mieć zachowanie pobierania pasujące do przeglądarki tak blisko, jak to możliwe. Kolejka to lepszy wybór. Kolejność PriorityQueue jest jeszcze lepsza. –
kolejka priorytetowa https://svn.arachnode.net/svn/arachnodenet/trunk/Structures/PriorityQueue.cs login/hasło: Publiczny/Public –