【发布时间】:2018-12-10 19:55:20
【问题描述】:
在这个线程 [Link}(Scraping table from local HTML with unicode characters) 中,QHarr 帮助我从本地 html 文件中抓取了一个表格。 我在Link 有一个 html 文件
我使用相同的代码并对变量“startTableNumber”和“endTableNumber”以及“numColumns”进行了一些编辑
Public Sub Test()
Dim fStream As ADODB.Stream, html As HTMLDocument
Set html = New HTMLDocument
Set fStream = New ADODB.Stream
With fStream
.Charset = "UTF-8"
.Open
.LoadFromFile "C:\Users\Future\Desktop\Sample 2.html"
html.body.innerHTML = .ReadText
.Close
End With
Dim hTables As Object, startTableNumber As Long, i As Long, r As Long, c As Long
Dim counter As Long, endTableNumber, numColumns As Long
startTableNumber = 91
endTableNumber = 509
numColumns = 14
Set hTables = html.getElementsByTagName("table")
r = 2: c = 1
For i = startTableNumber To endTableNumber Step 2
counter = counter + 1
If counter = 10 Then
c = 1: r = r + 1: counter = 1
End If
Cells(r, c) = hTables(i).innerText
c = c + 1
Next
End Sub
但是我得到了表格的分散数据更多我想找到一种灵活的方法,以便让代码识别这些变量而无需手动分配它们 我希望找到使用硒的解决方案。希望也不要收到负面的代表。我已尽力澄清问题 问候
【问题讨论】:
-
我真的在没有资格表的情况下编写了 Cells(r, c) 吗?嗯..... :-) 可能对人们有所帮助的是,有嵌套的表格标签元素,其中许多包含重复的相同内容。稍后在表格标记集合中,文本内容以通常在 td 标记中的方式出现在各个表格中,即您最终在该点将表格标记元素视为 td 写出时。
-
别管那点我的导师..
-
这不适用于您当前的文件,因为顺序略有不同,因此您不能简单地将一个元素一个接一个地假设它是下一个要写入的元素复制工作表中的总体表格外观。
-
如何采用该代码在 selenium 中使用并调整结果?
标签: html excel vba selenium web-scraping