J'essaie d'extraire une donnée spécifique d'un site et d'une pâte à une feuille de calcul pour mettre à jour quotidiennement une base de données. Mais comme il est impossible, téléchargez la table comme Excel ou CSV, je devrais extraire la table directement du site.
Suivez mon code et où je suis avec problème (où il y a "ici"). p>
3 Réponses :
Quelque chose comme devrait fonctionner, j'utilise le presse-papiers pour déplacer les données de la table sur une seule fois.
Sub Scrape_Stats() Dim Clip As Object: Set Clip = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") Dim Text As String Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1") With CreateObject("internetexplorer.application") .Navigate "https://www.infomoney.com.br/mercados/ferramentas/contratos-di-futuro" Do While .Busy And .readyState <> 4: DoEvents: Loop Text = .Document.getElementsByTagName("Table")(1).outerhtml .Quit End With Clip.SetText Text Clip.PutInClipboard ws.Range("A2:H1000").ClearContents ws.Range("A2").Select ws.PasteSpecial Format:="Unicode Text" Set Clip = Nothing End Sub
Il est beaucoup plus rapide de délivrer une demande XMLHTTP sans ouvrir un navigateur et analysez le JSON caché dans l'un des attributs ( J'utilise jsonconverter.bas que vous pouvez télécharger à partir de ici . Une fois que vous avez ajouté les .bas à votre projet, allez à Vbe> Outils> Références et ajoutez une référence à La ligne p> est de se protéger contre des résultats mis en cache de servie compte tenu des mises à jour de la page fréquentes. P> dicontrancts-dicontract code>) de la réponse.
Microsoft Scripting Runtime CODE> ET UN POUR
Microsoft HTML Library CODE>. P>.
Option Explicit
Public Sub GetTable()
Dim sResponse As String, html As HTMLDocument, json As Object, i As Long
Application.ScreenUpdating = False
Set html = New HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.infomoney.com.br/mercados/ferramentas/contratos-di-futuro", False
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send
sResponse = StrConv(.responseBody, vbUnicode)
End With
With html
.body.innerHTML = sResponse
Set json = JsonConverter.ParseJson(.querySelector("#serverDI").getAttribute("data-DIContracts"))
End With
With ThisWorkbook.Worksheets("Sheet1")
.Cells.ClearContents
.Cells(1, 1).Resize(1, UBound(json(1).keys) + 1) = json(1).keys
For i = 1 To json.Count
.Cells(i + 1, 1).Resize(1, UBound(json(i).keys) + 1) = json(i).Items
Next
End With
Application.ScreenUpdating = True
End Sub
Il y a une autre approche que vous pouvez essayer. J'ai utilisé des sélecteurs dans le script pour secouer la verbosité. Référence à ajouter avant exécution: P> Microsoft Internet Controls
Microsoft HTML Object Library
Quelle est la solution?
Je ne peux pas extraire les données d'un site et de coller à mon Excel. Ainsi, les étapes "désignent le tableau à extraire et copier les données du tableau - ici" "et" "" zone claire et coller du texte extrait dans la feuille / cellules appropriées - ici "ne sont pas complétés
Vous n'avez pas de code ici qui extrait des données d'un site Web. Il ne fait que naviguer sur le site Web, le permet de charger, puis de le fermer. Quel est votre résultat attendu?
Je ne connais pas le code correct pour extraire des données d'un site, j'ai donc laissé les espaces vides. (J'ai essayé beaucoup d'autres exemples)
Avez-vous une idée de code qui fait cette fonction?
Pouvez-vous publier quelques-uns des exemples afin que nous puissions voir ce qui ne fonctionne pas et suggère comment le faire fonctionner ou supprimer cette option de nos tentatives. On dirait qu'il n'y a pas d'utilisation des commandes de la page Web du tout dans le code, des objets pour les détenir ou les référencer.
Ce n'est pas un service de codage où vous indiquez vos exigences et récupérez le code débogué prêt à exécuter. Vous devez mettre en œuvre vous-même des efforts. Montrez-nous votre code et lisez également ceci: Stackoverflow.com/help/mcve B>
Vous pouvez essayer de faire référence à ces liens pour obtenir une idée de la manière d'extraire des données de site Web pour exceller. (1) officeetricks.com/extract-data-from-website- to-exceller-vba (2) ExceltrainingVidéos.com/... (3) .uk / blog / S393 / Query-Table.htm (4) WISEOWOOK.CO.UK/BLOG/S393/SCRAPE-WBSITE-HTML.HTM
Avez-vous essayé les solutions données?