gpt4 book ai didi

vba - VBA 的网络爬虫

转载 作者:行者123 更新时间:2023-12-04 22:03:10 27 4
gpt4 key购买 nike

我正在尝试使用 Visual Basic 编写 Webcrawler。我有一个包含链接的列表,存储在 Excel 中(第 1 列)。然后宏应打开每个链接并将网站中的某些信息添加到 excel 文件中。
Here's the first link (stored in field A2) .

宏应识别并将酒店名称插入第 2 列 (B2)、第 3 列 (C2) 中的评级和第 4 列 (D2) 中的地址。然后可以通过循环对所有其他链接重复此过程(所有网站具有相同的结构)。

到目前为止我的代码(我还没有添加循环):

Sub Hoteldetails()

Dim IEexp As Object

Set IEexp = CreateObject("InternetExplorer.Application")
IEexp.Visible = True

Range("A2").Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

End Sub

如何“选择”我想要的特定数据并将其插入到 excel 文件中?我尝试通过“添加数据”记录宏,但无法从网站导入数据。我也尝试通过使用各种示例代码来做到这一点,但它不适用于我的特定网站。

非常感谢您的帮助!

最佳答案

tl;博士;

我不会为您完成所有工作,但如果页面具有相同的结构,这将相当容易。

您可以发出无浏览器的 XMLHTTP 请求,以获得良好的快速响应,然后使用 id 或类名和集合索引选择感兴趣的项目。

这是一个示例,使用您提供的链接,您可以将其调整为所有链接的循环。

网页浏览:

Webpage view

代码输出:

Code output

VBA:

Option Explicit
Public Sub GetInfo()
Dim sResponse As String, HTML As New HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.tripadvisor.co.uk/Hotel_Review-g198832-d236315-Reviews-Grand_Hotel_Kronenhof-Pontresina_Engadin_St_Moritz_Canton_of_Graubunden_Swiss_Alps.html", False
.send
sResponse = StrConv(.responseBody, vbUnicode)
End With

sResponse = Mid$(sResponse, InStr(1, sResponse, "<!DOCTYPE "))

With HTML
.body.innerHTML = sResponse
Debug.Print "HotelName: " & .getElementById("HEADING").innerText
Debug.Print "Address: " & .getElementsByClassName("detail")(0).innerText
Debug.Print "Rating: " & .getElementsByClassName("overallRating")(0).innerText
End With
End Sub

引用文献:

VBE > 工具 > 引用 > HTML 对象库

关于vba - VBA 的网络爬虫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30867509/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com