VBA Excel抓取,如何从多个结果页面中抓取表格数据

时间:2018-02-22 15:24:05

标签: vba excel-vba excel

我正在从网页表中抓取数据并将数据放入Excel表格中。每页有大约1000页,每页有40个结果。我需要帮助制作宏更改结果页面并将它们全部放在同一个工作表中的一个长列表中。

我应该添加这样的东西:           对于Page = 1到100         如果Page> 1然后_

Option Explicit

Sub scrape()

    Dim appIE As Object
    Dim ihtml As Object

    Set appIE = CreateObject("internetexplorer.application")

    With appIE

        .Visible = True
        .navigate "http://www.boliga.dk/salg/resultater?so=1&sort=omregnings_dato-d&maxsaledate=today&iPostnr=&gade=&type=Villa&minsaledate=2017"

        While .Busy = True Or .readyState < 4: DoEvents: Wend

        Set ihtml = .document


        Dim allRowOfData As Object

        Set allRowOfData = appIE.document.getElementById("searchresult")

        Dim r As Long, c As Long

        Dim curHTMLRow As Object


        For r = 1 To allRowOfData.Rows.Length - 1

            Set curHTMLRow = allRowOfData.Rows(r)
            Cells(r + 1, c + 1) = curHTMLRow.Cells(7).innerText

        Next r

        .Quit

    End With

    Set appIE = Nothing


End Sub


        pageParameter = "&pageNumber=" & Page

1 个答案:

答案 0 :(得分:0)

对于此代码,我使用了UDF ONLY DIGITS designed by @paxdiablo.

.Visible = False

该网站有超过1200页,所以需要一段时间。如果你想先测试它是如何工作的。在长期运行之前,只需在上面的代码中进行2次更改。

首先改变。替换.Visible = True并将其设为For ThisPage = 1 To TotalPages Step 1

第二次更改:替换For ThisPage = 1 To (TotalPages - 1222) Step 1并将其设为CREATE TABLE "DUMMY_TABLE" ( "ID" VARCHAR2(40 BYTE), "JSON_CONTENTS" CLOB, "VIRTUAL_COLUMN1" VARCHAR2(40 BYTE) GENERATED ALWAYS AS (JSON_VALUE("JSON_CONTENTS" FORMAT JSON , '$.Info1.Value1' RETURNING VARCHAR2(40) NULL ON ERROR)) VIRTUAL , "VIRTUAL_COLUMN2" VARCHAR2(40 BYTE) GENERATED ALWAYS AS (JSON_VALUE("JSON_CONTENTS" FORMAT JSON , '$.Info2.Value2' RETURNING VARCHAR2(40) DEFAULT 'Value2' ON ERROR)) VIRTUAL ) 。这样它只能获得前5页。我知道你需要它们,但这只是你想尝试它。