AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 76986945
Accepted
HSHO
HSHO
Asked: 2023-08-27 19:43:57 +0800 CST2023-08-27 19:43:57 +0800 CST 2023-08-27 19:43:57 +0800 CST

从网页提取数据时出现错误

  • 772

我制定了以下代码来从提供的网页检索数据: https: //www.redfin.com/NV/Fallon/630-Serpa-Pl-89406/unit-Fallon/home/178255574 ?utm_source=android_share&utm_medium=share&utm_nooverride =1&utm_content=链接&2010988919=变体&utm_campaign=homecard_share。

但是,我在以下行遇到“需要对象”错误: sqFt = html.getElementsByClassName("statsLabel")(0).NextSibling.getElementsByClassName("statsValue")(0).innerText。

我希望有人可以提供帮助来纠正此问题,使代码能够成功地从网页中提取相关信息。

我们将非常感谢您的指导。谢谢。

Sub ExtractingRedfin()
    Dim url As String
    Dim ie As Object
    Dim html As Object
    Dim Lastrow As Long
    Lastrow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
    
    ' URL of the webpage to scrape
    url = Sheet1.Cells(Lastrow, 1).Value
    
    ' Create a new Internet Explorer instance
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = False ' Set to True if you want to see the browser
    
    ' Navigate to the URL
    ie.navigate url
    
    ' Wait for the browser to finish loading the page
    Do While ie.readyState <> 4 Or ie.Busy
        DoEvents
    Loop
    
    ' Get the HTML content of the page
    Set html = ie.document
    
    Dim beds As String
    Dim baths As String
    Dim sqFt As String
    Dim price As String
    Dim est As String
    Dim address As String
    Dim cityStateZip As String
    
    beds = html.getElementsByClassName("statsValue")(0).innerText
    baths = html.getElementsByClassName("statsValue")(1).innerText
    sqFt = html.getElementsByClassName("statsLabel")(0).NextSibling.getElementsByClassName("statsValue")(0).innerText
    price = html.getElementsByClassName("info-block price")(0).getElementsByClassName("statsValue")(0).innerText
    est = html.getElementsByClassName("info-block price")(0).getElementsByClassName("statsLabel")(0).innerText
    address = html.getElementsByClassName("street-address")(0).innerText
    cityStateZip = html.getElementsByClassName("citystatezip")(0).innerText
    

    ie.Quit
    
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet3")
    
    ws.Cells(2, 1).Value = beds
    ws.Cells(2, 2).Value = baths
    ws.Cells(2, 3).Value = sqFt
    ws.Cells(2, 4).Value = price
    ws.Cells(2, 5).Value = est
    ws.Cells(2, 6).Value = address
    ws.Cells(2, 7).Value = cityStateZip
End Sub
excel
  • 1 1 个回答
  • 22 Views

1 个回答

  • Voted
  1. Best Answer
    JohnM
    2023-08-27T20:31:13+08:002023-08-27T20:31:13+08:00

    自您的代码上次成功运行以来,该网站似乎已经进行了重组。尝试将相关行替换为

    beds = html.getElementsByClassName("statsValue")(1).innerText
    baths = html.getElementsByClassName("statsValue")(2).innerText
    sqFt = html.getElementsByClassName("stat-block sqft-section")(0).getElementsByClassName("statsValue")(0).innerText
    price = html.getElementsByClassName("stat-block beds-section")(0).getElementsByClassName("statsValue")(0).innerText
    est = html.getElementsByClassName("stat-block beds-section")(0).getElementsByClassName("est-monthly-payment")(0).innerText
    address = html.getElementsByClassName("street-address")(0).innerText
    cityStateZip = html.getElementsByClassName("dp-subtext bp-cityStateZip")(0).innerText
    

    ...虽然现在才有效,但自然不能保证这会有效多久(如果网站再次重组)。

    如果您有兴趣,请在W3Schools和MS Docs阅读更多内容。

    • 3

相关问题

  • 如何返回列出的合同上有费率但系统中没有费率的特定行?

  • 当某些值重复时自动在表中添加参考字段?

  • 循环遍历具有更改单元格地址的列

  • 搜索字符串并输出与该字符串对应的值

  • Excel中有没有一种方法可以计算字符串中特定文本的出现次数,但也包括前一个字符?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve