【问题标题】:Extract link from website query selector all从网站查询选择器中提取链接全部
【发布时间】:2020-08-22 06:02:49
【问题描述】:

我使用下面的 vba 代码从

中提取网站链接

https://www.bursamalaysia.com/market_information/announcements/company_announcement?keyword=&cat=FA%2CFRCO&sub_type=&company=&mkt=&alph=&sec=&subsec=&dt_ht=23%2F04%2F2020&dt_lt=07%2F05%2F2020#/?category=all

到 Excel 电子表格中。 但这里似乎有一些问题,我的电子表格中没有显示任何内容。感谢是否有人可以在这里指出我的错误。

以下是我希望将其提取到 Excel 电子表格中的网站链接列表。

Sub ScrapLink()

Dim p As Integer

Application.ScreenUpdating = False

p = InputBox("Please insert page number")

Application.ScreenUpdating = False
On Error GoTo ErrorHandler:

Worksheets("results").Cells(1, 1).Value = Worksheets("sheet1").Cells(1, 1).Value

For u = 2 To p
Worksheets("results").Cells(u, 1).Value = Worksheets("sheet1").Cells(1, 1).Value & "&page=" & u
Application.DisplayAlerts = False

Application.DisplayAlerts = True

ErrorHandler:
Application.ScreenUpdating = True

Next u


Dim IE As New InternetExplorer, html As HTMLDocument
Dim x As Long

Application.ScreenUpdating = False

x = WorksheetFunction.CountA(Worksheets("results").Range("A1:A1000"))

With IE
For u = 1 To x

IE.Visible = True
IE.Navigate Worksheets("results").Cells(u, 1).Value

While .Busy Or .ReadyState < 4: DoEvents: Wend
Application.Wait Now + TimeSerial(0, 0, 1)
Application.StatusBar = "Trying to go to website"
DoEvents


Dim links As Object, i As Long
    Set links = .Document.querySelectorAll("#bm_ajax_container 
    [href^='/market_information/announcements/company_announcement/']")
    For i = 1 To links.Length
        With ThisWorkbook.Worksheets("Sheet1")
             Range("A" & rows.count).End(xlUp).Offset(1).Value = links.item(i - 1)
        End With
    Next i
Next u
.Quit
End With


Worksheets("results").Range("a1:a1000").Clear

End Sub

【问题讨论】:

  • 你的意思是“刮”? “遇到一些问题”并不能真正描述您所面临的问题。您能否编辑您的问题并描述您在哪一行遇到问题?

标签: excel vba web-scraping


【解决方案1】:

试试

For i = 0 To links.Length -1 

Range("A" & rows.count).End(xlUp).Offset(1).Value = links.item(i ).href 

假设选择器正确。 nodeLists 是基于 0 的。

【讨论】:

  • 嗨,@QHarr 仍然没有结果,是不是因为我检查了 [href^='/market_information/announcements/company_announcement/']") 的错误代码?
  • 您的选择器看起来不对。对于网页,您只需使用 [href^='/market_information/announcements/company_announcement/']
猜你喜欢
  • 1970-01-01
  • 2020-09-23
  • 2019-03-10
  • 2016-04-18
  • 2017-01-08
  • 2011-02-14
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多