Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用VBA进行网页抓取-差不多了_Excel_Vba_Web Scraping - Fatal编程技术网

Excel 用VBA进行网页抓取-差不多了

Excel 用VBA进行网页抓取-差不多了,excel,vba,web-scraping,Excel,Vba,Web Scraping,在研究了这里的许多帖子之后,我终于拼凑出了有效的代码(见下文)!当索引基本上是页面上唯一的数据点()时,它从yahoo finance中提取索引值 但是,当我希望从包含多个索引值()的网站中获得相同的索引时,web代码似乎无法正确引用元素并将其放入编码中。谁能帮我完成这最后一关吗?非常感谢。 End Sub港交所的每个股票代码都有“listitem”类别。因此,要获取每个ticker,请使用getElementsByCassName(“listitem”)搜索该类。循环遍历每个元素,元素的第一

在研究了这里的许多帖子之后,我终于拼凑出了有效的代码(见下文)!当索引基本上是页面上唯一的数据点()时,它从yahoo finance中提取索引值

但是,当我希望从包含多个索引值()的网站中获得相同的索引时,web代码似乎无法正确引用元素并将其放入编码中。谁能帮我完成这最后一关吗?非常感谢。


End Sub

港交所的每个股票代码都有“listitem”类别。因此,要获取每个ticker,请使用getElementsByCassName(“listitem”)搜索该类。循环遍历每个元素,元素的第一个子元素(class=“col\u name”)将是股票代码名,第二个子元素(class=“col\u last”)将是价格

Sub HSI_Scrape()
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = False

    IE.Navigate "https://www.hkex.com.hk/?sc_lang=en"

    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop

    Dim listitems As Object 'list of tickers
    Dim listitem As Object  'each ticker
    Set listitems = IE.document.getElementsByClassName("listitem")
    Dim row As Integer
    row = 1
    For Each listitem In listitems
        Worksheets("Tickers").Range("A" & row) = listitem.Children(0).innerText 'Ticker Name
        Worksheets("Tickers").Range("B" & row) = listitem.Children(1).innerText 'Ticker Price
        row = row + 1
    Next listitem
End Sub

你可能会发现有用的(我真的很喜欢它们)是——它们涵盖了所有的基础知识,而且讲师是以前的老师,这一经验真的说明了这一点。然后花一些时间学习基本的html课程。一个是完美的入门级,尤其是html一开始看起来非常陌生。如果你感兴趣的话,同一个人会做一个CSS和JavaScript速成课程(他们都假设没有什么经验)供以后阅读!因此,我不能直接在一行中引用该项,但需要创建这个循环来遍历每个“类”。好极了谢谢你,奥梅拉!!!
Sub HSI_Scrape()
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = False

    IE.Navigate "https://www.hkex.com.hk/?sc_lang=en"

    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop

    Dim listitems As Object 'list of tickers
    Dim listitem As Object  'each ticker
    Set listitems = IE.document.getElementsByClassName("listitem")
    Dim row As Integer
    row = 1
    For Each listitem In listitems
        Worksheets("Tickers").Range("A" & row) = listitem.Children(0).innerText 'Ticker Name
        Worksheets("Tickers").Range("B" & row) = listitem.Children(1).innerText 'Ticker Price
        row = row + 1
    Next listitem
End Sub