【发布时间】:2019-03-16 06:54:29
【问题描述】:
我创建了一个宏,使用 selenium 从网站获取不同帖子的链接,并在导航到目标页面后解析每个帖子的标题。我的第一个示例只是按预期完成了使用单个 sub 编写的操作。
我想使用两个 subs 修改我的宏,并在两个 subs 之间重用相同的驱动程序,就像我在第二个示例中尝试的那样。
工作一个(使用单个子):
Sub FetchLinks()
Const link$ = "https://stackoverflow.com/questions/tagged/web-scraping"
Dim driver As New ChromeDriver, post As Object
Dim itmLink As Variant, R&, iDic As Object
Set iDic = CreateObject("Scripting.Dictionary")
With driver
.get link
For Each post In .FindElementsByCss(".summary .question-hyperlink", timeout:=10000)
iDic(post.Attribute("href")) = 1
Next post
For Each itmLink In iDic.keys
driver.get itmLink
Debug.Print .FindElementByCss("h1 > a.question-hyperlink").Text
Next itmLink
End With
End Sub
无法使其工作(试图在另一个子系统中传递驱动程序以重用它):
Sub FetchLinks()
Const link$ = "https://stackoverflow.com/questions/tagged/web-scraping"
Dim driver As New ChromeDriver, post As Object
With driver
.get link
For Each post In .FindElementsByCss(".summary .question-hyperlink", timeout:=10000)
FetchData driver, post.Attribute("href")
Next post
End With
End Sub
Sub FetchData(ByRef driver, ByRef nlink As String)
Dim elem As Object
With driver
.get nlink
Debug.Print .FindElementByCss("h1 > a.question-hyperlink").Text
End With
End Sub
如何在两个订阅者之间共享 chromedriver 以便从内页抓取一些内容?
【问题讨论】:
标签: vba selenium web-scraping