解析未完全加载 VBA 的网站

2024-05-27

尝试进行简单的网络解析,我的问题是页面在向下滚动之前无法完全加载。谷歌搜索已经提出可能使用硒,但由于我不知道如何使用它,我想我会在这里问

我使用的代码

Sub gfquote()

Dim oHttp As MSXML2.XMLHTTP
Dim sURL As String
Dim HTMLDoc As HTMLDocument
Dim dequote As String
Dim driver As New Webd
' Create an XMLHTTP object
Set oHttp = New MSXML2.XMLHTTP
    Dim oElement As Object
' get the URL to open
sURL = "https://www.thevinylspectrum.com/siser-heat-transfer-vinyl/siser-easyweed/12in-x-59in-rolls/"

' open socket and get website html
oHttp.Open "GET", sURL, False
oHttp.send
Set HTMLDoc = New HTMLDocument
With HTMLDoc
    ' assign the returned text to a HTML document
    .body.innerHTML = oHttp.responseText
    dastring = oHttp.responseText
    ' parse the result
  UserForm1.TextBox1.Text = dastring


   Set prices = .getElementsByClassName("price product-price")
    For Each oElement In prices
    Sheets("Sheet1").Range("A" & i + 1) = prices(i).innerText
    i = i + 1
Next oElement



End With

'Clean up
Set oHttp = Nothing

End Sub

Using 基本硒 http://florentbr.github.io/SeleniumBasic/并使用该技术@Hubisan https://stackoverflow.com/a/50510657/6241235处理延迟加载页面并滚动直到加载所有内容:

Option Explicit
Public Sub GetNamesAndPrices()
    Dim driver As New ChromeDriver, prevlen As Long, curlen As Long
    Dim prices As Object, price As Object, name As Object, names As Object
    Dim timeout As Long, startTime As Double

    timeout = 10                                 ' set the timeout to 10 seconds

    Application.ScreenUpdating = False

    With driver
        .get "https://www.thevinylspectrum.com/siser-heat-transfer-vinyl/siser-easyweed/12in-x-59in-rolls/"
        prevlen = .FindElementsByCss(".price.product-price").Count

        startTime = Timer                        ' set the initial starting time

        Do
            .ExecuteScript ("window.scrollTo(0, document.body.scrollHeight);")
            Set prices = .FindElementsByCss(".price.product-price")
            Set names = .FindElementsByCss(".product-name")
            curlen = prices.Count
            If curlen > prevlen Then
                startTime = Timer
                prevlen = curlen
            End If
        Loop While Round(Timer - startTime, 2) <= timeout

        Dim r As Long
        With ActiveSheet
            For Each name In names
                r = r + 1: .Cells(r, 1) = name.Text
            Next
            r = 0
            For Each price In prices
                r = r + 1: .Cells(r, 2) = price.Text
            Next
        End With
    End With
    Application.ScreenUpdating = True
End Sub

一些示例输出:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析未完全加载 VBA 的网站 的相关文章

  • 将 Dir 与旧文件后缀一起使用

    最近问的一个question https stackoverflow com questions 68282702包括代码 strFilename Dir fPath xls 它 成功 用于查找以xls and xlsx 我的问题是 为什么
  • VBA 使用 Like 运算符删除行

    简单的事情并不简单 我试图根据具有以 2L 开头的数据的特定列删除行 所以我写了这段代码 LastRow可以理解 Sub Cleanup For i 1 To LastRow If Range F i Like 2L Then Rows i
  • HTML 和 BeautifulSoup:当结构事先不知道时如何迭代解析?

    我从一个简单的 HTML 结构开始 如下所示 感谢 alecxe 的帮助 我能够创建这个 JSON 字典 u Outer List u Inner List u info 1 u info 2 u info 3 使用他的代码 from bs
  • 使用@@Identity

    我想知道如何从另一个数据库的表中获取最近生成的自动编号值 目前我正在这样做 Do Until rsA EOF Inserts new row here works Set rs New ADODB Recordset rs Open SEL
  • =MATCH() 等价于多维范围

    我有一个 Excel 工作表 其中单元格 A1 C20 INT RAND 10 这是我的数据范围 单元格 E1 1 E2 2 E3 3 等 这些是我试图找到的值 我设置单元格 F1 MATCH E1 A C 0 F2 MATCH E1 A
  • 延迟宏以允许事件完成

    在尝试从宏内访问外部 API 函数集时 我发现有必要添加延迟 以便外部 API 有时间处理选择 实现这一点会带来一些困难 因为使用 Application Wait 或 Application Sleep 不起作用 在线搜索让我尝试使用 G
  • VBA - 填充自定义功能区下拉列表/列表框

    我无法填充下拉列表 列表框 原始代码来自 https exceloffthegrid com inserting a dynamic drop down in ribbon https exceloffthegrid com inserti
  • 如何在 Android Lollipop 中使用注释修复 Android Jackson 解析期间的 IncompleteClassChangeError?

    在我们的 Android 应用程序中 我们在模型中使用 Jackson Annotations JsonTypeInfo use JsonTypeInfo Id NAME include JsonTypeInfo As PROPERTY p
  • 寻找引文解析器

    我需要一个解析器来扫描学术文本 提取引文 并将这些引文解析为其组成部分 作者 标题 出版日期等 我尝试过 Paracite 但它速度非常慢 而且不能产生高质量的结果 任何语言都可以 但首选 Java 看一眼ParsCit http aye
  • VBA - HTML 抓取问题

    我正在尝试从网站上抓取拍卖数据https www rbauction com heavy equipment auctions https www rbauction com heavy equipment auctions 我当前的尝试是
  • 将按颜色过滤的行复制到新工作表

    我有一个 Excel 电子表格 如下所示 Job1 Job2 Job3 Job4 Job5 Job1 Job2 Job3 Job4 Job5 每行和列之间的单元格颜色不同 我需要按橙色对每列进行排序 然后将行名称复制到新工作表中 所以最后我
  • 如何模拟“焦点”和“打字”事件

    尝试模拟 onfocus 和打字事件 但它不起作用 Sub Login MyLogin MyPass Dim IEapp As InternetExplorer Dim IeDoc As Object Dim ieTable As Obje
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • SimpleDateFormat.parse() 忽略模式中的字符数

    我正在尝试解析一个可以具有不同格式的日期字符串 尽管字符串不应与第二个模式匹配 但它却以某种方式匹配 因此返回错误的日期 这是我的代码 import java text ParseException import java text Sim
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 使用输入作为显示日期的基础

    我需要一种方法来使用用户窗体上的输入来确定将在输出上显示的日期 这是我的代码 If StatusBox Value lt 23 59 And ShiftCode Value AP Then Cells emptyRow 8 Value Da
  • XSD 嵌套元素

  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • 使用 Perl 获取 值

    因此 我有一个报告工具 可以在 HTML 文件中输出作业调度统计信息 并且我希望使用 Perl 来使用这些数据 但我不知道如何单步浏览 HTML 表 我知道如何使用 jQuery 来做到这一点 find tr each function v

随机推荐

  • 如何从系统属性获取Windows操作系统环境变量

    我遇到一个关于系统属性环境变量的奇怪问题 如你所知 我们可以打开Computer gt Property gt Advanced System Settings gt Advanced gt System Environment Varia
  • 为什么在 WinForms 中可以跨线程添加控件,而在 WPF 中却不能?

    在虚拟 WinForms 应用程序中 我可以在设计时创建 ListBox 在运行时创建后台线程 然后从后台线程将控件添加到 ListBox 但如果我在 WPF 中执行相同的操作 则会出现错误 为什么我可以在 WinForms 中执行此操作
  • Python将文件从Linux复制到WIndows

    我正在构建一个网站 该网站有一个表单 可以捕获用户数据并在用户数据上运行一些cgi cgi 的第一步是需要将文件从 Linux Web 服务器复制到 Windows 计算机 服务器将使用 Active Directory 角色帐户作为复制凭
  • angular2 使用 router.subscribe 来观察 url 变化

    我在用着router event subscribe angular router观察 url 变化以执行if虽然声明event subscribe工作正常 但我的问题是我怎样才能避免重复我的if声明只是为了在这些网址上显示标题 这可能是别
  • 生成总和恒定的随机数

    我在想是否有办法生成一组随机数 其总和始终是一个常数 例如 20 可以分为 5 个数字 1 2 3 4 10 我不在乎这 5 个数字分别是什么 只要它们的总和等于 20 有没有办法以编程方式执行此操作 为了获得均匀分布 技巧是将总和视为一条
  • OOP概念混乱?

    在阅读一些编程书籍时 我注意到作者说 在OOP中 你在理解OOP的主要思想时可能会有些困惑 是啊 我有些困惑 您是否也有同样的情况 是什么让程序员 甚至是经验丰富的程序员 感到困惑 如果你拥有它 你怎么能打败这个 Thanks The An
  • 计算对象数组内的数组数量

    假设我有一个对象数组 预期产量 阿尔法 4 贝塔 8 为此我尝试过 const apple name alpha details attachment 123 456 attachment 1454 1992 name beta detai
  • 列出当前请求中使用的所有 Twig 模板

    我正在使用 Symfony2 和 Twig 模板引擎 有没有办法输出当前请求中加载的所有 Twig 模板文件的列表 包括通过加载的模板文件extends include etc 当覆盖第三方捆绑包的块时 这将使我的生活变得更加轻松 但我找不
  • 获取每个训练实例的损失值 - Keras

    我想获得每个实例的损失值作为模型训练 history model fit 例如 上面的代码返回每个时期的损失值 而不是小批量或实例 做这个的最好方式是什么 有什么建议么 在这个 keras 官方文档页面的末尾 正是您要寻找的内容https
  • 如何替换 Logstash 中字段中的字符串

    我的 Windows 事件日志中有一个 IP 地址字段 其中 IP 地址前面包含类似 fffff 的字符 我无法更改此处的源 因此我必须在 Logstash 中修复此问题 我一定很不擅长谷歌搜索 但我真的找不到一种简单的方法来从logsta
  • 运行 mocha 排除路径

    我有这个 在 gulpfile js 中 var gulp require gulp var mocha require gulp mocha gulp task test function gulp src test js node mo
  • Android 中拍摄的照片方向发生变化

    我通过单击按钮打开相机应用程序 并在下一个活动中显示捕获的照片 但拍摄的照片旋转了90度 当我捕获图像后在视图中显示图像时 它的方向始终是横向的 为什么在纵向模式下拍摄照片时 照片显示的不是纵向 onClick 按钮 Intent i ne
  • 拦截对对象属性的 __getitem__ 调用

    问题 我怎样才能拦截 getitem 调用对象属性 解释 所以 场景如下 我有一个对象将类似字典的对象存储为属性 每次 getitem 该属性的方法被调用 我想拦截该调用并根据键对获取的项目进行一些特殊处理 我想要的看起来像这样 class
  • 没有 Duende 身份服务器的 Blazor

    我有一个小型 Blazor WASM 项目 最近将其迁移到 net 6 但现在我尝试运行已发布的项目 应用程序警告我 我没有 Duende Identity Server 的许可证 我的问题是 我可以不用 Duende Identity S
  • 复杂的 Xpage 部分刷新需要很长时间

    我有一个复杂的 xpage 其中有很多嵌套的自定义控件 每次我执行部分刷新都需要超过 4 秒才能完成 如果我消除了复杂性 它就可以正常工作并且速度如您所愿 我对这个复杂的 Xpage 进行了测试 即使使用部分执行模式 这个简单的测试也需要
  • 如何在闪亮中使用带有reactiveValues的debounce

    我知道我可以像这样将 debounce 与reactive 结合使用 这就是我需要的行为 但我想改用reactiveValues ui lt fluidPage textInput inputId text label To see how
  • IPython 在第一个换行符之后结束缩进块的输入

    在 IPython 中 我无法输入多行缩进块 它结束输入 从 提示下一步In x 当我按下回车键时 例如 我正在尝试编写牛顿方法的示例实现来进行演示 我只能在它返回之前写第一行 所以我只能在 IPython 中输入以下内容 In 3 def
  • 如何在 Firebase 规则中限制用户根据电话号码读取/写入数据

    目前 我已经实现了类似于下面的项目文件夹结构 项目文件夹结构 https i stack imgur com gXkbO png 我已在代码中添加了电话身份验证 现在 在 Firebase 规则的帮助下 我想根据经过身份验证的电话号码限制我
  • 在 Python 中使用语法糖来实现组合函数是一个好主意吗?

    前段时间我查看了 Haskell 文档 发现它的函数组合运算符非常好 所以我实现了这个小装饰器 from functools import partial class compfunc partial def lshift self y f
  • 解析未完全加载 VBA 的网站

    尝试进行简单的网络解析 我的问题是页面在向下滚动之前无法完全加载 谷歌搜索已经提出可能使用硒 但由于我不知道如何使用它 我想我会在这里问 我使用的代码 Sub gfquote Dim oHttp As MSXML2 XMLHTTP Dim