2017-10-18 5 views
0

Comme pour beaucoup d'autres questions, je suis vraiment novice dans l'utilisation des macros Excel et HTML.Macros Excel - Utilisation de données Excel pour gratter la page HTML

Je construis une table avec des entrées d'éléments de Donjons et Dragons (DnD) dont je veux obtenir des descriptions à partir d'une page web particulière: http://www.5esrd.com/gamemastering/magic-items/. Par exemple, une entrée dans ma table serait Armure d'Adamantine, donc je voudrais que la macro recherche la page Web pour cette liste, gratte la description qui est entrée sur la page Web et l'enregistre dans le document Excel. Dans ce cas, cette description spécifique (selon la page Web de 5esrd) est la suivante:

Armor (moyen ou lourd, mais pas cacher), rare

Cette armure est renforcée par adamantin, l'un des substances les plus difficiles dans l'existence. Tant que vous le portez, tout coup critique contre vous devient un coup normal.

Sur cette page, tous les articles sont des liens vers des pages qui les regroupent par type (Epée, baguette, etc.). Je voudrais parcourir ma rangée d'éléments dans Excel, rechercher cet élément sur la page et gratter sa description dans ma table Excel.

Je suivais cette page: https://www.wiseowl.co.uk/blog/s393/scrape-website-html.htm, qui récupère les données de la page d'accueil de stackoverflow. Il cible directement certaines des tables utilisées par la page Web pour organiser ses entrées. La page DnD que j'essaie d'utiliser n'organise pas ses entrées dans des tableaux comme celui-ci, donc je suis un peu perdu sur la façon de procéder.

Si quelqu'un pouvait m'aider dans la bonne direction, je serais très reconnaissant!

+0

Merci pour le conseil Shahin! J'ai ajouté quelques détails de ce que je cherche exactement, j'espère que cela aide à expliquer ce que je cherche à faire. –

Répondre

0

C'est le code que j'utilise pour extraire une page Web sur notre site d'entreprise. Je mets toutes mes données dans la colonne B, alors faites les ajustements en conséquence. Cela devrait vous aider à démarrer.

Sub TestScrape() 
' SCRAPE A WEB PAGE 
Dim ieDoc As New HTMLDocument 'ieDocDocument 
Dim tdCollection As Object 'table that has the javascript attributes and contains the element I want to click 
Dim AnchorLinks As Object 
Dim tdElements As Object 
Dim tdElement As Object 
Dim AnchorLink As Object 
Dim lRow As Long 
Dim ie As InternetExplorer 
Dim cls As IHTMLElementCollection 

Set ie = New SHDocVw.InternetExplorer 
With ie 
    .Visible = True 
    .Left = 0 
    .TheaterMode = True '<<-- Comment this out if you don't want Theater Mode 
    .Navigate url:="Enter your URL here" 

    While .ReadyState < 4 Or .Busy: DoEvents: Wend 

End With 

     Application.Wait Now + TimeSerial(0, 0, 4) 


ieDoc.body.innerHTML = ie.Document.body.innerHTML 

With ieDoc.body 
    Set AnchorLinks = .getElementsByTagName("table") 
    Set tdElements = .getElementsByTagName("td") ' 

    For Each AnchorLink In AnchorLinks 
     Debug.Print AnchorLink.innerText 
    Next AnchorLink 

End With 

lRow = 1 
    For Each tdElement In tdElements 
     Debug.Print tdElement.innerText 
     Cells(lRow, 2).Value = tdElement.innerText 
     lRow = lRow + 1 
    Next 
    Application.Wait (Now + TimeValue("0:00:1")) 
With ie 
    .TheaterMode = False 
    .Quit 
End With 
Set ie = Nothing 

End Sub 
+0

Merci, je vais donner un coup de swing et voir comment je peux jouer avec pour le faire correspondre à ce dont j'ai besoin. –