You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于现有VB6代码获取网页表格行内链接的技术问询

修改VB6 AGG_PROVINCE过程以提取省份链接

一、现有VB6代码修改方案

假设你的原代码使用MSHTML对象模型解析网页表格,以下是修改后的核心逻辑,新增提取每行对应省份链接的功能:

Sub AGG_PROVINCE()
    Dim objIE As Object
    Dim objDoc As MSHTML.HTMLDocument
    Dim objTable As MSHTML.HTMLTable
    Dim objRow As MSHTML.HTMLTableRow
    Dim objCell As MSHTML.HTMLTableCell
    Dim objLink As MSHTML.HTMLAnchorElement
    Dim strPR As String, strProvincia As String, strLink As String
    
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = False
    objIE.Navigate "https://www.comuniecitta.it/sigle-province-italiane"
    
    ' 等待页面加载完成
    Do While objIE.Busy Or objIE.ReadyState <> 4
        DoEvents
    Loop
    
    Set objDoc = objIE.Document
    ' 定位目标表格(假设是页面第一个表格,可根据实际调整)
    Set objTable = objDoc.getElementsByTagName("table")(0)
    
    ' 遍历表格行(跳过表头)
    For Each objRow In objTable.Rows
        ' 跳过表头行(根据实际表头判断,比如第一行是表头)
        If objRow.RowIndex > 0 Then
            ' 获取省份缩写(第一列)
            strPR = objRow.Cells(0).innerText
            ' 获取省份名称(第二列)
            strProvincia = objRow.Cells(1).innerText
            ' 提取第二列中的链接
            Set objLink = objRow.Cells(1).getElementsByTagName("a")(0)
            If Not objLink Is Nothing Then
                strLink = objLink.href
            Else
                strLink = "" ' 无链接时赋值空字符串
            End If
            
            ' 这里添加你的后续逻辑,比如写入数据库/Excel等
            Debug.Print "PR: " & strPR & " | Provincia: " & strProvincia & " | Link: " & strLink
        End If
    Next objRow
    
    objIE.Quit
    Set objIE = Nothing
    Set objDoc = Nothing
    Set objTable = Nothing
End Sub

关键修改点:

  • 在遍历每行时,从省份名称所在的单元格(第二列)中通过getElementsByTagName("a")定位链接元素
  • 提取链接元素的href属性值,处理无链接的边界情况

二、其他可行实现方案

1. 使用VBScript + XMLHTTP(轻量无IE依赖)

无需依赖IE控件,直接通过HTTP请求获取网页源码后解析:

Set objHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
objHTTP.Open "GET", "https://www.comuniecitta.it/sigle-province-italiane", False
objHTTP.Send

Set objDoc = CreateObject("HTMLFile")
objDoc.write objHTTP.responseText

Set objTable = objDoc.getElementsByTagName("table")(0)
For Each objRow In objTable.Rows
    If objRow.RowIndex > 0 Then
        strPR = objRow.Cells(0).innerText
        strProvincia = objRow.Cells(1).innerText
        Set objLink = objRow.Cells(1).getElementsByTagName("a")(0)
        strLink = objLink.href
        WScript.Echo strPR & ", " & strProvincia & ", " & strLink
    End If
Next

2. Python + BeautifulSoup(跨平台更灵活)

如果可以脱离VB6环境,Python的HTML解析库更高效:

import requests
from bs4 import BeautifulSoup

url = "https://www.comuniecitta.it/sigle-province-italiane"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

table = soup.find("table")
for row in table.find_all("tr")[1:]:  # 跳过表头
    cells = row.find_all("td")
    pr = cells[0].text.strip()
    provincia = cells[1].text.strip()
    link = cells[1].find("a")["href"]
    print(f"PR: {pr} | Provincia: {provincia} | Link: {link}")

3. PowerShell脚本(Windows原生工具)

利用PowerShell的网页解析能力,无需额外安装:

$url = "https://www.comuniecitta.it/sigle-province-italiane"
$response = Invoke-WebRequest -Uri $url
$table = $response.ParsedHtml.getElementsByTagName("table")[0]

foreach ($row in $table.Rows) {
    if ($row.RowIndex -gt 0) {
        $pr = $row.Cells[0].InnerText
        $provincia = $row.Cells[1].InnerText
        $link = $row.Cells[1].getElementsByTagName("a")[0].href
        Write-Host "PR: $pr | Provincia: $provincia | Link: $link"
    }
}

内容的提问来源于stack exchange,提问作者user1579247

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:13:21