L'envoi des Données du Formulaire Par le biais de XMLHTTP en VBA
Je suis en train d'envoyer les données du formulaire par le biais de l'objet XMLHTTP pour obtenir une page web.
Je suis à l'aide d'Excel 2010.
Le site est http://espn.go.com/mlb/players.
Je suis en train de chercher un certain joueur par l'intermédiaire du "searchbox" (par exemple, Fister).
Voici le code source entre les balises de formulaire.
<form id="searchBox" name="searchBox" action="http://search.espn.go.com/results" method="get" accept-charset="utf-8" style="color: #999999;">
<div class="clearfix">
<input autocomplete="off" class="text" type="text" placeholder="Search" name="searchString" id="searchString" />
<input type="hidden" name="page" id="page" value="null" />
<input type="hidden" name="fromForm" value="true" />
<input class="submit" type="submit" value="" />
</div>
</form>
Mon code.
Sub SearchPlayer()
Dim xml As MSXML2.ServerXMLHTTP
Dim search, url As String
search = "searchString=Fister&page=null&fromForm=true"
url = "http://espn.go.com/mlb/players"
Set xml = New MSXML2.ServerXMLHTTP
xml.Open "POST", url, False
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.send search
MsgBox xml.responseText
Set xml = Nothing
End Sub
- Le formulaire Html utilise GET-méthode et votre exemple de code utilise la POSTE.
Vous devez vous connecter pour publier un commentaire.
Ce code a fonctionné pour moi:
(ce qui suppose que vous avez MSXML 6.0 sur votre système -- msxml6.dll dans votre dossier system32)
Comme indiqué, la forme utilise une requête GET de sorte que vous vous utilisez l'attribut ACTION et d'ajouter les balises INPUT' valeurs dans une seule chaîne de caractères comme ceci:
http://search.espn.go.com/results?searchString=Fister&page=null&fromForm=true
Je functionized le Sous de sorte que vous pouvez l'appeler avec un autre joueur des noms à gratter chaque page. Bien sûr, vous avez besoin d'une fonction urlencode si vous vous attendez à être appelé avec les noms des joueurs qui ont des espaces à l' (voici un).
Si je ne suis pas en manque de quelque chose, puis le
URL
où il va après cliquez surSearch
bouton ressemble à ceci: http://www.espn.com/mlb/players?search=FisterIl est
GET
demande et il retourneHTML
qui peut être ensuite cherché par exemple à l'aide de la norme de la recherche des fonctions deMSHTMLDocument
, exemple:Remarque: pour regarder le demande, appuyez simplement sur la touche F12 de votre navigateur et sélectionnez le trafic Réseau etc.