我在抓取网页时遇到了一点麻烦,基本上我有一个循环,它会转到一个网站,搜索一个特定的公司,然后点击搜索,然后转到公司页面,提取公司的成立日期。(https://icis.corp.delaware.gov/Ecorp/EntitySearch/NameSearch.aspx)。我基本上有一个很大的表,但为了简单起见,我这里有一个较小的表,循环在excel中从表的顶部到底部移动,并在名称旁边的B列中提取建国日期。{Table example}。我的代码如下:
Option Explicit
Sub click_search()
Dim i As SHDocVw.InternetExplorer
Dim idoc As MSHTML.HTMLDocument
Dim output As Range
Dim txt_input As Range
Dim wb As Workbook
Dim ws As Worksheet
Dim n As Integer
Set wb = ActiveWorkbook
Set ws = wb.Sheets(1)
Set i = New InternetExplorer
i.Visible = True
i.Navigate "https://icis.corp.delaware.gov/Ecorp/EntitySearch/NameSearch.aspx"
Do While i.ReadyState <> READYSTATE_COMPLETE
Loop
Set idoc = i.Document
On Error Resume Next
For n = 1 To 3
idoc.getElementById("ctl00_ContentPlaceHolder1_frmEntityName").Value = Cells(n, 1).Value
Application.Wait Now + #12:00:01 AM#
idoc.getElementById("ctl00_ContentPlaceHolder1_btnSubmit").click
Application.Wait Now + #12:00:15 AM#
idoc.getElementById("ctl00_ContentPlaceHolder1_rptSearchResults_ctl00_lnkbtnEntityName").click
Application.Wait Now + #12:00:10 AM#
Dim V As Variant
Set V = idoc.getElementById("ctl00_ContentPlaceHolder1_lblIncDate")
Cells(n, 2) = V.innerHTML
i.Quit
Set i = New InternetExplorer
i.Visible = True
i.Navigate "https://icis.corp.delaware.gov/Ecorp/EntitySearch/NameSearch.aspx"
Application.Wait Now + #12:00:10 AM#
Next n
End Sub问题是,我必须退出internet explorer并重新启动它,以便能够搜索下一家公司,这就是我在循环中遇到问题的地方,因为它只在第一次迭代中起作用,并且在循环的第二次迭代中有点卡在页面上。它按预期工作,并获得第一个公司的正确日期,但对于第二个公司,它有点卡在起始页上,根本不会进行搜索。仅仅重新加载页面也不会起作用,因为这会导致浏览器卡住,因为您必须手动接受您想要在浏览器中重新加载页面。任何关于如何解决这个问题的帮助都是非常感谢的。
提前感谢!
发布于 2021-03-26 22:06:43
删除了i.Quit中的最后一大块代码,并将其替换为:
i.Navigate "https://icis.corp.delaware.gov/Ecorp/EntitySearch/NameSearch.aspx"
Application.Wait Now + #12:00:10 AM#https://stackoverflow.com/questions/66807358
复制相似问题