通过代码从web获取相关详细信息



嗨,我是VBA的新手,正在努力提升我的VBA技能。

我正试图获得";所有者名称";以及";邮寄地址";从下面的网络链接

https://www.pbcgov.org/papa/Asps/PropertyDetail/PropertyDetail.aspx?parcel=30424032060001820

通过在Sheet1〃中使用该ID;A1〃;

30-42-40-32-06-000-1820(该ID与姓名和邮寄地址将粘贴在"B"栏和"C"栏中的人相关。

我试过了,但没能成功。

任何人的帮助都将不胜感激。

Sub Data()
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
Url = "https://www.pbcgov.org/papa/?fbclid=IwAR28Ao4d0Ic5hTcd4w6BYv5FwaVYKFc3sCtmcqPI8Ctw2Q0jUy2zIdc7I-c"
'Wait for site to fully load
ie.Navigate2 Url

Do While ie.Busy = True
DoEvents
Loop
RowCount = 1
With Sheets("Sheet1")
.Cells.ClearContents
RowCount = 1
For Each itm In ie.document.all
.Range("A" & RowCount) = itm.tagname
.Range("B" & RowCount) = itm.ID
.Range("c" & RowCount) = Left(itm.innertext, 1024)
RowCount = RowCount + 1
Next itm
End With

End Sub

这可能有点先进,但提供了另一种看待问题的方法。

您需要的信息分布在两个表和这些表中的两行中。一个所有者信息表(分为几行(;同样,还有一张地址表。

您可以使用css模式#ownerInformationDiv table:nth-child(1)来隔离这两个表,通过应用ie.document的querySelectorAll方法在nodeList中返回。

循环每个表,在给定的表中,循环行(忽略标题行(并连接每行中的文本。文本组合后,对于给定的表格,将其写在表格上。

另一件需要注意的事情包括:

整页加载等待

While .Busy Or .ReadyState <> READYSTATE_COMPLETE: DoEvents: Wend

具有类的合格对象

Dim ie As SHDocVw.InternetExplorer

使用描述性标题

Public Sub WriteOutOwnersInfo()

VBA:

Option Explicit
Public Sub WriteOutOwnersInfo()
Dim ie As SHDocVw.InternetExplorer

Set ie = New SHDocVw.InternetExplorer

With ie
.Visible = True
.Navigate2 "https://www.pbcgov.org/papa/Asps/PropertyDetail/PropertyDetail.aspx?parcel=30424032060001820"
While .Busy Or .ReadyState <> READYSTATE_COMPLETE: DoEvents: Wend
Dim tables As Object

Set tables = .Document.querySelectorAll("#ownerInformationDiv table:nth-child(1)")

Dim currTable As Object, currRow As Object, c As Long
Dim i As Long, j As Long, lineOutput As String

For i = 0 To tables.Length - 1
Set currTable = tables.Item(i)
lineOutput = vbNullString

For j = 1 To tables.Item(i).Rows.Length - 1
Set currRow = currTable.Rows(j)
lineOutput = lineOutput & Chr$(32) & Trim$(currRow.innertext)
Next
c = c + 1
ActiveSheet.Cells(1, c) = Trim$(lineOutput)
Next
.Quit
End With

End Sub

相关内容

最新更新