Excel宏 - 使用Excel数据抓取HTML页面

时间:2017-10-18 16:57:21

标签: html excel-vba web-scraping vba excel

与许多其他问题一样,我对使用Excel宏和HTML非常陌生。

我正在构建一个表格,其中包含来自龙与地下城(DnD)的项目条目,我希望从特定网页获取描述:http://www.5esrd.com/gamemastering/magic-items/。例如,我的表中的一个条目是Adamantine Armor,所以我希望宏在网页上搜索该列表,抓取在网页上输入的描述并将其保存到excel文档中。在这种情况下,该具体描述(根据5esrd网页)如下:

护甲(中等或重型,但不隐藏),不常见

这套盔甲用金刚石加强,金刚石是现存最难的物质之一。当你戴着它时,对你的任何重击都会成为正常的打击。

在此页面上,所有项目都是指向按类型(剑,魔杖等)分组的页面的链接。我想在Excel中遍历我的项目行,在页面上搜索该项目并将其描述刮到我的Excel表格中。

我正在关注此页面:https://www.wiseowl.co.uk/blog/s393/scrape-website-html.htm,它从stackoverflow的主页上抓取数据。它直接针对网页用于组织其条目的一些表。我尝试使用的DnD页面并没有将其条目组织到这样的表格中,所以我对如何继续进行了一点点迷失。

如果有人能帮助我指出正确的方向,我将非常感激!

1 个答案:

答案 0 :(得分:0)

这是我用于在公司网站上抓取网页的代码。我将所有数据都放在B列中,因此请进行相应的调整。这应该可以帮到你。

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