Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >VBA -抓取没有id的HTML表格

VBA -抓取没有id的HTML表格
EN

Stack Overflow用户
提问于 2018-07-19 16:56:01
回答 1查看 1.3K关注 0票数 1

我正在尝试用VBA从html表中获取数据。从列表框中选择一个值,填充文本框并单击按钮后,将出现表格。但是网站的url不会改变。

我的程序确实填充了该框,选择列表框的值并单击“搜索”按钮,但之后我无法从表中获取数据。

我需要页面末尾的表格单元格的值。(第二个)

下面是该页面的url

代码:

代码语言:javascript
运行
AI代码解释
复制
Sub Info()

Dim enlace As String
Dim id As String
Dim lista
Dim rut As Integer
Dim i As Integer
Dim largo As Integer

largo = Worksheets("Lista").Cells(rows.Count, 1).End(xlUp).Row

id = Worksheets("Lista").Cells(2, 1).Value
lista = Split(id, "-")
rut = lista(0)
enlace = "http://www.cmfchile.cl/institucional/mercados/entidad.php?auth=&send=&mercado=V&rut=" & rut & "&grupo=&tipoentidad=FINRE&vig=VI&row=AAAw+cAAhAABP4MAAz&control=svs&pestania=1"

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = False
objIE.Navigate (enlace)
Do
    If objIE.ReadyState = 4 Then
        objIE.Visible = False
        Exit Do
    Else
        DoEvents
        End If
Loop

Dim button_name As String
button_name = "Aportantes"

Set link = objIE.document.getElementsByTagName("A")
For Each Hyperlink In link
If InStr(Hyperlink.innerText, button_name) > 0 Then
    Hyperlink.Click
Exit For
End If
Next

Dim nuevoLink As String
nuevoLink = Hyperlink

objIE.Quit

Set ie = CreateObject("InternetExplorer.application")
ie.Visible = False
ie.Navigate (nuevoLink)
Do
    If ie.ReadyState = 4 Then
        ie.Visible = False
        Exit Do
    Else
        DoEvents
        End If
Loop

Dim sem As String
Dim ano As Integer
sem = "03"
ano = 2018

Dim aportantes As Object
Dim cuotas_emitidas As Object

ie.document.getElementById("semestre").Value = sem
ie.document.getElementById("aa").Value = ano
Set elems = ie.document.getElementsByTagName("input")
For Each e In elems
If (e.getAttribute("value") = "Consultar") Then
    e.Click
    ''HERE IS THE PROBLEM
    Set aportantes = ie.document.getElementsByTagName("table")(1).getElementsByTagName("tr")(0).getElementsByTagName("tr")(1)
    ThisWorkbook.Worksheets("Lista").Cells(i, 4).Value = aportantes
    Set cuotas_emitidas = ie.document.getElementsByTagName("table")(1).getElementsByTagName("tr")(1).getElementsByTagName("tr")(1).innerText
    ThisWorkbook.Worksheets("Lista").Cells(i, 5).Value = cuotas_emitidas
End If
Next e
End Sub

HTML:

代码语言:javascript
运行
AI代码解释
复制
<table>
 <tbody>
    <tr>
    <td class="fondoOscuro">2.01.60 TOTAL APORTANTES</td>
    <td>58</td>
  </tr>

  <tr>
    <td class="fondoOscuro">2.01.70 CUOTAS EMITIDAS</td>
    <td>20000000 </td>
  </tr>
  <tr>
    <td class="fondoOscuro">2.01.71 CUOTAS PAGADAS</td>
    <td>7691000</td>

  </tr>
  <tr>
    <td class="fondoOscuro">2.01.72 CUOTAS SUSCRITAS Y NO PAGADAS</td>
    <td>0 </td>
  </tr>
  <tr>
    <td class="fondoOscuro">2.01.73 NUMERO DE CUOTAS CON PROMESA DE SUSCRIPCION Y PAGO</td>
    <td>0  </td>
  </tr>
  <tr>
    <td class="fondoOscuro">2.01.74 NUMERO DE CONTRATOS DE PROMESAS DE SUSCRIPCION Y PAGO</td>
    <td>0</td>
  </tr>
  <tr>
    <td class="fondoOscuro">2.01.75 NUMERO DE PROMITENTES SUSCRIPTORES DE CUOTAS</td>
    <td>0 </td>
  </tr>
  <tr>
    <td class="fondoOscuro">2.01.80 VALOR LIBRO DE LA CUOTA</td>
    <td>1.0059 </td>
  </tr>
</tbody></table>

EN

回答 1

Stack Overflow用户

发布于 2018-07-19 20:02:58

你已经得到了很好的答案。问题是,当QHarr决定参与进来时,他几乎没有给其他人留下任何选择来表明立场。但是,下面的脚本将为您节省一些额外的时间。我已经使用IE来获取page source,然后应用更快的方法来管理其余部分。我尝试解析根据年份2016填充的相关表格数据。请随意根据您的要求更改年份。

代码语言:javascript
运行
AI代码解释
复制
Sub ScrapeTabularInfo()
    Dim IE As New InternetExplorer, Html As HTMLDocument
    Dim Htmldoc As New HTMLDocument, post As Object, elem As Object
    Dim trow As Object, R&, C&

    With IE
        .Visible = False
        .navigate "http://www.cmfchile.cl/institucional/mercados/entidad.php?auth=&send=&mercado=V&rut=9278&grupo=&tipoentidad=FINRE&vig=VI&row=AAAw%20cAAhAABP4MAAz&control=svs&pestania=27"
        While .Busy Or .readyState < 4: DoEvents: Wend
        Set Html = .document
        Html.querySelector("#aa").innerText = 2016
        Html.querySelector("input[value='Consultar']").Click
        Do: Set post = Html.getElementsByTagName("table")(1): DoEvents: Loop While post Is Nothing
    End With

    Htmldoc.body.innerHTML = Html.DocumentElement.outerHTML

    For Each elem In Htmldoc.getElementsByTagName("table")(1).Rows
        For Each trow In elem.Cells
            C = C + 1: Cells(R + 1, C) = trow.innerText
        Next trow
        C = 0: R = R + 1
    Next elem
    IE.Quit
End Sub

这里最好的方法是利用你已经有一个演示的post request。

要添加到库中的引用(考虑到您有IE9或更高版本才能使.querySelector()正常工作):

代码语言:javascript
运行
AI代码解释
复制
Microsoft Internet Controls
Microsoft HTML Object Libray
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51428160

复制
相关文章
(二)html 复杂表格
---- <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>程序员之美</title> <meta charset="utf-8" /> <style type="text/css"> /*表格样式*/ table { width: 90%; back
花狗Fdog
2020/11/03
2.5K0
(二)html 复杂表格
python生成html表格
最近做一个小工具,需要将统计数据生成html表格。在网上搜罗一圈后发现用pandas生成表格非常好用。代码如下:
py3study
2020/01/13
7.2K0
网站抓取引子 - 获得网页中的表格
爬虫是都不陌生的一个概念,比如百度、谷歌都有自己的爬虫工具去抓取网站、分析、索引,方便我们的查询使用。 在我们浏览网站、查询信息时,如果想做一些批量的处理,也可以去分析网站的结构、抓取网页、提取信息,然后就完成了一个小爬虫的写作。 网页爬虫需要我们了解URL的结构、HTML语法特征和结构,以及使用合适的抓取、解析工具。我们这篇先看一个简单的处理,给一个直观的感受:一个函数抓取网页的表格。以后再慢慢解析如何更加定制的获取信息。 HMDB (人类代谢组数据库)收录了很多代谢组的数据,用于代谢组学、临床化学、生物
生信宝典
2018/02/05
3.1K0
网站抓取引子 - 获得网页中的表格
HTML表格中<td scope="col">与<td scope="row">的含义
HTML表格中<td scope="col">与<td scope="row">的含义
wfaceboss
2019/04/08
2.4K0
html中表格整体居中,html中怎么把表格居中
html中把表格居中的方法:首先创建一个HTML示例文件;然后使用table标签创建一个两行两列的表格;接着给table标签添加一个class属性;最后将margin属性设置为“0 auto”即可。
全栈程序员站长
2022/07/22
14.6K0
html中表格整体居中,html中怎么把表格居中
抓取html页面中的json数据
抓取html页面中的json数据
Java架构师必看
2021/08/03
3.3K0
Python 抓取邮件中表格到Excel
上代码 import imapclient # 这个包导不进来,先导入 pyzmail36,下载好后再改回 pyzmail 即可 import pyzmail from bs4 import BeautifulSoup import pandas as pd import xlsxwriter import html5lib # 提取邮件里面的表格 class my_eamil(): """ 构造函数,创建一个类的入口 self指的是类实例对象本身
Java架构师必看
2021/08/09
1.3K0
Python用列表生成html表格
Python用列表生成html表格 d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } def generate_tr(name, score): if score < 60: #如果小于60分,表格输出时标红 return '<tr><td>%s</td><td style="color:red">%s</td></tr>'% (name,score) else: return '<tr><td>%s</td><td>%s
py3study
2020/01/13
3.2K0
python爬虫图片抓取(python从网络上抓取照片)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128295.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/28
1.6K0
python爬虫图片抓取(python从网络上抓取照片)
Python自动化邮件添加HTML表格图像和Excel附件
wb = load_workbook(fileName,data_only=True)
沈宥
2022/05/09
6250
Python自动化邮件添加HTML表格图像和Excel附件
html表格
<table>、<tr>和<td>是HTML表格最基本的3个标签,其他标题标签<caption>、表头单元格<th>可以没有,但是这3者必须要有。
Qwe7
2022/05/16
4.1K0
Html 表格
看了上图百度的搜索页面,有木有心动一下,别慌你也能够的。这就是我们今天要讲的表单。
全栈程序员站长
2022/07/05
3.3K0
Html 表格
HTML表格
            4.cellspacing:外边距(单元格和单元格之间的距离)
十月梦想
2018/08/29
4.1K0
HTML表格代码_html如何制作表格代码
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169633.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
14.9K0
七 .Html的表格
1.表格 owspan 纵向的合并单元格 colspan 横向的合并单元格 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Docume
小海怪的互联网
2020/10/26
2.1K0
Python 自动整理 Excel 表格
相信有不少朋友日常工作会用到 Excel 处理各式表格文件,更有甚者可能要花大把时间来做繁琐耗时的表格整理工作。最近有朋友问可否编程来减轻表格整理工作量,今儿我们就通过实例来实现 Python 对表格的自动化整理。
数据森麟
2019/11/29
1.1K0
Python 自动整理 Excel 表格
相信有不少朋友日常工作会用到 Excel 处理各式表格文件,更有甚者可能要花大把时间来做繁琐耗时的表格整理工作。最近有朋友问可否编程来减轻表格整理工作量,今儿我们就通过实例来实现 Python 对表格的自动化整理。
一墨编程学习
2019/08/20
1.6K0
Python 自动整理 Excel 表格
相信有不少朋友日常工作会用到 Excel 处理各式表格文件,更有甚者可能要花大把时间来做繁琐耗时的表格整理工作。最近有朋友问可否编程来减轻表格整理工作量,今儿我们就通过实例来实现 Python 对表格的自动化整理。
短短的路走走停停
2019/07/30
2.2K0
Python 自动整理 Excel 表格
html代码大全表格_html表格代码怎么写
在做前台html中我们经常用到一些表格,苦逼的后台程序猿大多都简简单单的写一些标签,下面分享一下只用h5就能写出一些精美的form
全栈程序员站长
2022/09/22
7.9K0
点击加载更多

相似问题

VBA HTML表格抓取-特定于复杂表格的原始数据

111

我可以在Python中从html文件中抓取表格吗?

112

用Python从网页中抓取表格

43

HTML复杂表格

20

Python从网站上抓取表格?

012
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文