【问题标题】:Get data from webpage that use ajax function using VBA Excel使用 VBA Excel 从使用 ajax 函数的网页获取数据
【发布时间】:2017-12-04 23:11:26
【问题描述】:

我想将http://www.fipiran.com/FundDetails?regno=11186 中的数据提取到excel 中。问题是网页使用 ajax 功能,每个条目都没有任何元素。这是我提到的 html 的一部分:

<script>


    $(document).ready(function () {

        $.ajax({ // Get Faculty PartialView
            url: "/Fund/MFwithRegNo",
            headers: { 'x-my-custom-header': 'Index' },
            contentType: 'application/html;charset=utf-8',
            type: 'Get',
            data: { 'regno': '11186' },
            dataType: 'html',
            success: function (data) {
                $("#CMFAll").html(data);
                $('#imgMFAll').hide();

            },
            error: function () {

            }
        });


    });
</script>

如何提取网页中的数据如:تاریخ بروز رسانی

【问题讨论】:

  • 我没有使用 VBA 进行网页抓取,但我几乎可以肯定,如果网页不是纯 html,则无法提取 java 脚本或 ajax 构建的部分。这在已知和最近的库中已经是一个很大的挑战,更不用说旧的 VBA
  • 我必须使用 VBA,因为我的数据在 EXCEL 中。我敢肯定一定有办法!
  • 不,您不必这样做。就个人而言,我已经编写了一个代码来在 python 中进行抓取,并且我从 Excel 导入和导出数据,所以你不限于 VBA

标签: ajax excel vba extract webpage


【解决方案1】:

使用可以处理缓慢加载页面的方法。例如,使用 Internet Explorer 并引入循环,直到设置页面上的预期元素(设置超时以防止无限循环)。

我将使用selenium basic 来展示,因为到目前为止,硒是我处理缓慢加载页面的首选方法。下面的脚本使用 CSS 选择器组合通过其父类、元素标签 (div) 和返回列表中的位置来定位元素。

目标:

选择器组合:

.clearfix.header_company div

在具有类clearfix header_company 的父级中的divs 中,所需元素位于索引10。


VBA:

Option Explicit
Public Sub GetInfo()
    Dim d As WebDriver
    Set d = New ChromeDriver
    Const url = "http://www.fipiran.com/FundDetails?regno=11186"

    With d
        .AddArgument "--headless"
        .Start "Chrome"
        .get url
        Debug.Print .FindElementsByCss(".clearfix.header_company div", timeout:=2000)(10).Text
        .Quit
    End With
End Sub

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多