我正在从网页表中抓取数据并将数据放入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
答案 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页。我知道你需要它们,但这只是你想尝试它。