se connecter au site Web en utilisant HTMLAgilityPack
Dans le code ci-dessous, je peux définir la valeur d'un nom d'utilisateur et le mot de passe à l'aide de la HTMLAgilitypack mais je ne peut pas invoquer l'événement click du bouton de connexion (l'id dans le code source de la touche est "s1").
Est-il de toute façon pour que cela soit fait? La raison pour laquelle je ne suis pas en utilisant la WebBrowser
est parce que j'aurai besoin de l'HTMLAgilityPack pour récupérer des données à partir de la page sans les Id dans le code source.
var doc = new HtmlWeb().Load("http://MYURL.com");
doc.DocumentNode.SelectSingleNode("name").SetAttributeValue("value", "MyUsername");
doc.DocumentNode.SelectSingleNode("password").SetAttributeValue("value", "MyPassword");
source d'informationauteur touyets
Vous devez vous connecter pour publier un commentaire.
Pas avec ce que le HTML Agility Pack (HAP) de la bibliothèque fournit pas directement.
Le HAP est grande pour l'obtention d'une seule page et d'analyse, mais il n'est pas conçu pour des interactions continues. Choses qui manquent sont la gestion des cookies, JavaScript interaction et plus.
Pour ouvrir une session, vous avez probablement besoin d'envoyer un POST HTTP pour le serveur, y compris les données que vous voulez - les HAP peuvent pas vous aider.
Vous aurez besoin d'utiliser une classe comme
WebRequest
de faire le post, je suggère de regarder fiddler et de l'utiliser pour voir ce que la requête devrait ressembler et construire en conséquence, bien que peut-être la première étape.Vous pouvez étudier l'utilisation du web dans les outils d'automatisation tels que selenium ou WatiN à la place.
Vous devez observer la requête POST via le violoneux, et de voir comment il est structuré.
par exemple :
Généralement, un site permettrait de reconnaître que vous êtes connecté en recevant leurs cookie dans votre demande.
HttpClient par défaut envoie les cookies reçus à partir d'un domaine spécifique avec chaque séquentielle demande à ce domaine (Jusqu'à ce que vous jetez que HttpClient exemple)
1) Créer un cookie contenant et il a attribué à votre HttpClient instance.
2) Utiliser HttpClient pour faire la connexion de la requête POST.
3) Utilisation HttpClient pour rendre les données en GET.
4) Lire le code html de chaîne à partir de la réponse.
5) Utilisation HtmlAgilityPack HtmlDocument pour charger le document à partir de la chaîne html et non pas à partir du web (comme la plupart des exemples montrent).
Je ne sais pas si vous êtes en utilisant WPF contrôle WebBrowser, mais si vous êtes, vous pouvez utiliser quelque chose le long des lignes de
C'est ce qui fonctionne pour moi.