Bonjour
Je cherche comment récupérer des valeurs sur le site : http://whatismyipaddress.com/
Je voudrais obtenir 'ip et le pays mais je n'y arrive pas car il n'y a pas d'id et je n'arrive pas avec un getElementByTagName .
Merci de votre aide.
Bonjour
Je cherche comment récupérer des valeurs sur le site : http://whatismyipaddress.com/
Je voudrais obtenir 'ip et le pays mais je n'y arrive pas car il n'y a pas d'id et je n'arrive pas avec un getElementByTagName .
Merci de votre aide.
Bonjour skylle,
Il faut tout simplement utiliser la classe webrequest en étudiant préalablement les requêtes grâce au très réputé outil nommé fiddler.
ou alors tu peux utiliser ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim wc As New WebClient Msgbox(wc.DownloadString("http://anti.x10.mx/api/getip.php")))
a+
Utilise l'API :
http://whatismyipaddress.com/api
(enfin API c'est un bien grand mot, c'est juste une URL qui retourne ton IP en texte brut...)
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Bonjour,
Pour l'ip j'ai pris dans l'input qui l'affiche, et pour le pays j'ai bouclé le tableau jusqu'au <th>Country:</th> et une fois là on sait que le prochain élément est le nom du pays
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then 'la page crache plusieurs DocumentCompleted pour chaque frame chargé, on teste que la page entiére soit chargée MsgBox(getIp() & " " & getCountry()) End If End Sub ''' <summary> ''' Récupére l'IP de l'element INPUT sur la page ''' </summary> ''' <returns>l'ip as string</returns> Private Function getIp() As String For Each elem As HtmlElement In WebBrowser1.Document.GetElementsByTagName("input") If elem.Name = "LOOKUPADDRESS" Then Return elem.GetAttribute("value") 'On retourne la value présente dans l'input End If Next Return Nothing End Function ''' <summary> ''' Récupére le pays dans la page ''' </summary> ''' <returns>le pays as string</returns> Private Function getCountry() As String Dim trouve As Boolean = False Dim TABLES As HtmlElementCollection = Me.WebBrowser1.Document.GetElementsByTagName("table") For Each TBL As HtmlElement In TABLES 'On fouille les tableau de la page For Each tbb As HtmlElement In TBL.All 'Pour chaque tableau on fouille son contenu 'si l'element <th>Country:</th> est trouvé alors au tour de boucle suivant on tombe sur l'élément <td>France</td> et on test cela par un boolean "trouve" If trouve Then trouve = False Return tbb.InnerText End If If tbb.InnerText = "Country:" Then 'Si on passe ce texte, c'est que le prochain element sera le pays, donc on passe le boolean à true pour dire qu'on l'a trouvé trouve = True End If Next Next Return Nothing End Function
EDIT: Vu le post de Tomlev trop tard, je me suis embêté pour rien ...![]()
Tu peux utilisé XSLT
Je ne vois vraiment pas en quoi ça va résoudre le problème
- déjà XSLT c'est pour du XML, pas pour du HTML ; et en dehors du cas particulier de XHTML, un document HTML n'est pas un document XML valide, donc XSLT n'est pas utilisable
- de plus le problème est qu'il n'y a pas de façon d'identifier clairement le texte à extraire (pas d'id ni de class ni quoi que ce soit d'exploitable), donc XSLT n'y changera rien
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
@Ez3kiel J'ai essayé ton code il ne fonctionne pas :S
Puis pour l'api je voudrais l'ip mais aussi le pays, la ville et le FAI donc ça ne marche pas.
Dans ce cas regarde ça :
http://freegeoip.net/json/
Remplace json par xml ou csv, selon le format que tu préfères obtenir
Pour la ville, ne t'attends pas à ce que ce soit très précis... moi il m'indique Suresnes, alors que je suis dans le nord de Paris.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ha ... Chez moi avec un WebBrowser (WebBrowser1) qui charge http://whatismyipaddress.com/ le code fonctionne, je récupère le pays et l'ip.
Mais sinon ne t'embête pas, ma solution fonctionne mais uniquement dans la mesure où la structure de leur page ne changera pas. Je pense que la solution de Tomlev est plus évolutive et plus "propre". (De plus http://whatismyipaddress.com/ ne te retourne pas la ville comme tu le souhaites)
Partager