Tiens ! Tu m'intrigues. Est-ce que par hasard System.web n'offrirait pas également des outils similaires à HAP ? En mieux ou en moins bien ? J'avoue que l'aide de VS2010 ne me parle pas encore assez vu mon niveau
Bonjour,
J'ai un peu progressé depuis la dernière fois
Maintenant, je voudrais interagir avec une page Web. C'est à dire rentrer des valeurs dans des champs imput d'un formulaire web.
Y a-t-il un tuto pour ce faire ou bien y a-t-il des classes dans le htmlAgilityPack qui le permettent ? En relisant le tuto, je m'aperçois qu'il ne s'agit que de l'extraction de données (comme son nom l'indique)
Il n'y a rien pour faire ça dans HAP à ma connaissance...
Cela dit, ça ne servirait pas à grand chose. Je suppose que si tu veux remplir les champs d'un formulaire, c'est pour soumettre le formulaire ? Si c'est ça, inutile de passer par le HTML, tu peux directement faire la requête avec le contenu qui va bien avec WebClient.UploadValues
Bah si les données ont été saisies par l'utilisateur, c'est que la page est affichée dans le navigateur... donc il faudrait pouvoir interagir avec le navigateur, ce qui est déjà nettement plus compliqué (à moins que ce soit le contrôle WebBrowser dans une application, dans ce cas c'est un peu plus simple)
Depuis tout à l'heure, je m'aperçois que mon formulaire de contact à remplir comporte un captcha.
Donc je suis obligé d'afficher la page web, puis de la remplir.
Je pense que ça va passer plutôt par le contrôle WebBrowser.
MAis au moins, je n'ai pas à simuler le clic sur le bouton valider : c'est l'utilisateur qui s'en chargera après avoir validé le captcha.
Je reviens sur ton propos car je suis un peu perdu.
J'ai réussi à interagir avec un formulaire chargé dans un System.windows.Forms.WebBrowser, dans un projet de type Winform, de la façon suivante :
Mais cette solution affiche le formulaire web.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Dim docForm As System.Windows.Forms.HtmlDocument docForm = WebBrowser1.Document If docForm IsNot Nothing Then docForm.GetElementById("cfg-element-27-9").SetAttribute("value", "testNom") docForm.GetElementById("cfg-element-27-3").SetAttribute("value", "testEmail") docForm.GetElementById("cfg-element-27-4").SetAttribute("value", "testContenu") docForm.GetElementById("cfg-element-27-5").InvokeMember("submit") End If End Sub
Je voudrais faire la même chose mais en n'affichant pas le formulaire (et dans une classe, pas dans un projet WinForms) par analogie avec l'instruction du htmlagilitypack :
Quels objet faut-il utiliser et quelles méthodes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim doc As HtmlDocument Dim web As New HtmlWeb doc = web.Load(sURL)
Je comprends pas très bien ton histoire... S'il y a un captcha, il faut bien afficher le formulaire, non ?
Ah oui, j'ai oublié de te dire que j'ai changé de fournisseur de solution Web. J'en ai trouvé un qui permet de générer un form sans captcha (je n'ai pas changé que pour cela...)
Ah ok. Bah dans ce cas il suffit de repérer les noms des champs, et d'utiliser WebClient.UploadValues pour envoyer les valeurs au formulaires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Using client As New WebClient Dim url As String = "..." ' URL définie dans le champ "action" de l'élément <form> Dim method As String = "POST" ' ou GET ; voir le champ "method" de l'élément <form> Dim values As New NameValueCollection() values.Add("cfg-element-27-9", "testNom") values.Add("cfg-element-27-3", "testEmail") values.Add("cfg-element-27-4", "testContenu") client.UploadValues(url, method, values) End Using
Euh, on le trouve où l'élément <form> (pas dans le index.php en tout cas)
Voici le lien du form :
Bonjour, je voudrais savoir si il y a la possibilité de collaborer avec un document XML et de récupérer les données tel qu'avec de l'html.
En accédant à un site pour mon projet, je tombe sur ce code :
Comment je pourrais le traiter ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="UTF-8"?> <ctnSondage> <sondage> <id>1</id> <text>mon sondage</text> <date>2014-11-04 06:27:03</date> </sondage> <sondage> <id>2</id> <text>teste sondage</text> <date>2014-11-24 15:14:16</date> </sondage> </ctnSondage>
Avec un parser XML, plutôt que HTML
Il y a tout ce qu'il faut dans .NET pour manipuler du XML ; pas besoin d'HTML Agility Pack, qui de toute façon n'est pas fait pour ça...
Tu peux utiliser :
- Linq to XML, qui est le plus simple pour manipuler directement le DOM
- La sérialisation XML si tu veux mapper directement ton XML sur des objets
- XmlDocument permet aussi de manipuler le DOM, mais c'est plus ancien et moins facile à utiliser que Linq to XML
- XmlReader permet de lire le XML noeud par noeud (éléments, attributs, etc) de façon séquentielle. C'est difficile, peu pratique et les scénarios où c'est utile sont assez limités (ça peut servir pour lire un document XML trop gros pour être chargé en mémoire par exemple)
Bonjour je suis assez intéresser par votre solution pour extraire du contenu web de mes page en vue de faire une documentation
j'ai une page html
mais je voudrais récupérer le contenu de X label avec le tool tip correspondant
voici ma structure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <label id="jform_add_search_prefix-lbl" for="jform_add_search_prefix" class="hasTooltip" title="" data-original-title="<strong>Text search of small/common words</strong><br />Enable this to be able to include small or very common words in the text search"> Text search of small/common words</label>comment faire pour récupérer le label et le data-original-title (en gardant les correspondances)
Code : Sélectionner tout - Visualiser dans une fenêtre à part <label id="jform_loadfw_masonry-lbl" for="jform_loadfw_masonry" class="hasTooltip" title="" data-original-title="<strong>masonry</strong><br />Certaines de ces librairies peuvent être désactivées, certaines sont toujours nécessaires. Normalement vous devriez tout laisser activé ici. <br/><br/><b>NOTE:</b> Si toutefois vous choisissez d'en charger certaines manuellement depuis le frontend, alors vous devriez vous assurer qu'elles sont bien chargées via une extension tierce, par exemple dans votre template Joomla. <br/><br/><b>NOTE:</b> si vous ne chargez pas les Frameworks nécessaires le comportement ou l'apparence de vos formulaires de frontend (principalement le formulaire de soumission de contenu) seront endommagés.">masonry</label>
Merci d'avance
Un truc m'échappe... si c'est tes pages, tu dois déjà avoir les données à partir desquelles elles sont générées, non ? (à moins que ce soit des pages statiques écrites à la main?)
Si tu connais l'id du label tu peux faire ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var label = doc.GetElementById("jform_add_search_prefix-lbl"); string tooltip = label.GetAttributeValue("data-original-title", ""); string labelText = label.InnerText;
en fait le soucis c'est que les données sont dans des fichiers langues un peu mélangé ...
l'idée serait d'avoir une fonction globale car les id des label change suivant les pages
j'ai une 50ene de page a scannée => je voudrais recueper toutes les infos par page
tu comprends ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager