Simple navigateur web en C#
J'ai créé un simple navigateur web, mais je veux ajouter de la récursivité de la fonction, de sorte que chaque page qui s'ouvre, je peux obtenir l'url de cette page,mais je n'ai aucune idée de comment je peux le faire et je veux aussi inclure les threads pour le rendre plus rapide
ici, c'est mon code
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;
}
Voter à près pas bien l'étendue de la question. Veuillez considérer la recherche pour "web crawler en C#" et le raffinage de vous remettre en question pour être plus ciblée.
Vous ne voulez certainement pas à utiliser la récursivité que vous ne serez pas en mesure de tenir l'état de l'internet sur la pile locale.Vous pouvez utiliser une Pile comme Tom l'a suggéré, mais vous devez inverser l'ordre dans lequel vous ajoutez AbsoluteUris pour être analysées, d'autre la nature de la pile avez-vous l'analyse de la bas de la page, et si vous allez écrire un robot, vous devez avoir la récupération de comportement correspondent à un navigateur aussi étroitement que possible. Une File d'attente est un meilleur choix. Un PriorityQueue est encore meilleure.
PriorityQueue svn.arachnode.net/svn/arachnodenet/trunk/Structures/... nom d'utilisateur/Mot de passe: Public / Public
Jetez un oeil ici: neelbhatt40.wordpress.com/2016/07/19/webcrawler-in-c-net
Vous ne voulez certainement pas à utiliser la récursivité que vous ne serez pas en mesure de tenir l'état de l'internet sur la pile locale.Vous pouvez utiliser une Pile comme Tom l'a suggéré, mais vous devez inverser l'ordre dans lequel vous ajoutez AbsoluteUris pour être analysées, d'autre la nature de la pile avez-vous l'analyse de la bas de la page, et si vous allez écrire un robot, vous devez avoir la récupération de comportement correspondent à un navigateur aussi étroitement que possible. Une File d'attente est un meilleur choix. Un PriorityQueue est encore meilleure.
PriorityQueue svn.arachnode.net/svn/arachnodenet/trunk/Structures/... nom d'utilisateur/Mot de passe: Public / Public
Jetez un oeil ici: neelbhatt40.wordpress.com/2016/07/19/webcrawler-in-c-net
OriginalL'auteur Khaled Mohamed | 2012-05-04
Vous devez vous connecter pour publier un commentaire.
J'ai corrigé votre GetContent méthode à suivre pour obtenir de nouveaux liens seront analysées à partir de la page:
Mis à jour
Fixe: regex doit être regexLink. Merci @shashlearner pour le signaler (ma faute de frappe).
Qu'est-ce que le regexLink ici?
regex doit être regexLink, merci @shashlearner pour le signaler
Que faire si je voulais écrire un robot pour récupérer des pages dynamiques qui sont le résultat d'une recherche?
OriginalL'auteur Darius Kucinskas
j'ai créé quelque chose de similaire à l'aide de Extension De Réactif.
https://github.com/Misterhex/WebCrawler
j'espère que cela peut vous aider.
OriginalL'auteur Misterhex
La suite comprend une réponse/recommandation.
Je crois que vous devriez utiliser un
dataGridView
au lieu d'untextBox
comme lorsque vous regardez dans le GUI, il est plus facile de voir les liens (Url) trouvé.Vous pouviez changer:
à
Maintenant, pour la question, vous n'avez pas compris:
qui ont été utilisés, comme il serait apprécié si je pouvais faire comme ne pouvez pas comprendre.
OriginalL'auteur Connor
À partir d'un point de vue design, je ai écrit quelques webcrawlers. Fondamentalement, vous voulez mettre en œuvre un parcours en Profondeur d'Abord de Recherche à l'aide d'une Pile de structure de données. Vous pouvez utiliser la Largeur de la Première Recherche aussi, mais vous aurez probablement venir dans la pile des problèmes de mémoire. Bonne chance.
OriginalL'auteur Tom