Récupérer des données à partir d'un site web à partir de Visual Basic
Il y a ce site qui nous achetons des widgets à partir de qui fournit les détails de chacune de leurs parties sur sa propre page. Exemple: http://www.digikey.ca/product-search/en?lang=en&site=ca&KeyWords=AE9912-ND. Je dois trouver toutes les pièces qui sont dans notre base, et ajouter le Fabricant et le Numéro de Pièce du Fabricant de valeurs à leurs champs.
M'a dit qu'il y a un moyen pour Visual Basic pour accéder à une page web et d'en extraire des informations. Si quelqu'un pouvait me diriger dans la bonne direction par où commencer, je suis sûr que je peux comprendre.
Grâce.
... Regarder dans
HttpWebRequest
/ HttpWebResponse
pour créer votre propre programme ou htmlagilitypack.codeplex.com - Espérons que cette aideOriginalL'auteur Jackery Xu | 2013-02-13
Vous devez vous connecter pour publier un commentaire.
Comment gratter un site web en utilisant HTMLAgilityPack (VB.Net)
Je suis d'accord que htmlagilitypack est le moyen le plus facile pour effectuer cette opération. Il est moins sujette aux erreurs que de simplement en utilisant les Regex. Le suivant sera de savoir comment je traite avec de grattage.
Après le téléchargement htmlagilitypack*dll, créez une nouvelle application, ajouter htmlagilitypack via nuget, et de la référence. Si vous pouvez utiliser google Chrome, il vous permettra d'inspecter la page pour obtenir des informations sur l'endroit où votre information est situé. Cliquez-droit sur une valeur que vous souhaitez capturer et de regarder pour la table qu'il se trouve dans (suivre le HTML un peu).L'exemple suivant permet d'extraire toutes les valeurs de cette page dans le "prix" de la table. Nous avons besoin de connaître la XPath valeur de la table (cette valeur est utilisé pour charger des htmlagilitypack sur ce qu'il faut chercher), de sorte que le document nous créer des looks pour nos valeurs et nos spécificités. Ceci peut être réalisé par trouver ce que la structure de vos valeurs sont de droite et cliquez sur copier XPath. De là, nous obtenons...
Veuillez noter que, parfois, l'expression XPath, vous obtenez à partir de Chrome peut être assez grande. Vous pouvez souvent simplifier par trouver quelque chose d'unique à propos de la table de vos valeurs. Dans cet exemple, il est "id", mais dans d'autres situations, il pourrait facilement être en-têtes ou de la classe ou de quoi que ce soit.
Ce XPath valeur cherche quelque chose dont l'id est égal à la tarification, qui est notre table. Lorsque nous regardons plus loin, nous voyons que nos valeurs sont dans les tr,tr et td balises. HtmlAgilitypack ne fonctionne pas bien avec le tbody donc l'ignorer. Notre nouveau XPath est...
Ce XPath dit de regarder pour le prix d'un identifiant unique dans la page, puis recherchez du texte dans son tr et td balises. Maintenant, nous ajoutons le code...
Pour extraire les valeurs que nous avons simplement référence à notre tableau de la valeur qui a été créé dans notre boucle et c'est innertext membre.
Maintenant, nous avons des boîtes de message qui pop-up les valeurs...vous pouvez changer la boîte de message pour une liste de tableaux à remplir, ou quelle que soit la façon dont vous souhaitez stocker les valeurs. Maintenant, il suffit de faire la même chose pour toutes les autres tables que vous souhaitez obtenir.
Veuillez noter que le Doc variable qui a été créé est réutilisable, donc si vous voulez cycle par l'intermédiaire d'une autre table dans la même page, vous n'avez pas à recharger la page. C'est une bonne idée surtout si vous faites beaucoup de demandes, vous ne voulez pas à claquer le site, et si vous êtes à l'automatisation d'un grand nombre de gratte, il met un certain temps entre les demandes.
De grattage est vraiment aussi simple que cela. C'est l'idée de base. Amusez-vous!
Ok va ici. Comme pour trouver une valeur qui n'a pas de decernable identificateur de l'essayer. mettez en surbrillance le "1" dans la rupture de prix de la colonne de la page que vous avez indiqué dans votre question initiale. droit et cliquez sur inspecter l'élément. Vous verrez code html mis en évidence ci-dessous, clic droit et copier xpath. Et le coller dans le bloc-notes, il devrait ressembler //*[@id="prix"]/tbody tr/[2]/td[1] pour être poursuivi.
<span itemprop="name">Assmann WSW Composants</span> je veux récupérer la valeur, mais je n'arrive pas à utiliser itemprop comme l'utilisation de l'id. Aussi, je ne vois pas le xpath qui commence par //*
vous remarquerez que le texte que nous avons obtenu a certains index de tableau de notation. Il s'agit de l'emplacement à l'intérieur de son structure...by la modification de ces valeurs, vous obtenez d'autres domaines de la table. Maintenant, enlevez le tbody car il ne sera pas de retour des résultats, de la coller dans votre sélectionnez les nœuds et changer le "à"
mais je n'ai pas ce texte quand j'cliquez sur inspecter l'élément...
OriginalL'auteur MonkeyDoug
Html Agility Pack va être votre ami!
Regardant le source de la page d'exemple vous avez fournis, ils sont à l'aide de HTML5 Microdonnées dans leur balisage. J'ai cherché un peu plus sur l'
CodePlex
et a trouvé un microdonnées de l'analyseur qui peut aider aussi: Les Microdonnées De L'AnalyseurOriginalL'auteur zeroef