Attribute VB_Name = "mdlWebQueryIETable" Option Explicit Sub WebQueryIETable() Dim objIE As Object Dim objIEDOM As Object Dim objTable As Object Dim objTR As Object Dim strURL As String Dim lngRow As Long Dim intTbRow As Integer Dim intCol As Integer Dim intPage As Integer strURL = "http://data.10jqka.com.cn/market/ggsyl/" & "field/syl/order/desc/page/" '把网页赋值给变量strURL Set objIE = CreateObject("InternetExplorer.Application") '创建ie浏览器 objIE.Visible = False '隐藏ie浏览器 Cells.ClearContents '清空用于保存数据的工作表 For intPage = 1 To 5 '使用for...next循环爬取前5个网页的数据 Debug.Print intPage With objIE .Visible = False .navigate strURL & intPage '使用ie对象navigate访问网页,strURL & intPage用于构建网页URL Do Until .readyState = 4 '用do...loop循环等待网页加载完毕 DoEvents Loop Set objIEDOM = .document '用ie对象document属性返回浏览器加载的文档对象,并赋值给对象变量objIEDOM End With Set objTable = objIEDOM.getElementsByTagName("table")(1) '定位网页中待抓取的数据表格 For intTbRow = IIf(intPage = 1, 0, 1) To objTable.Rows.Length - 1 '用for...next循环遍历网页中表格的单元格 Set objTR = objTable.Rows(intTbRow) lngRow = lngRow + 1 For intCol = 0 To objTR.Cells.Length - 1 Cells(lngRow, intCol + 1) = objTR.Cells(intCol).innerText '将网页中表格单元格的innertext属性返回的字符写入工作表中 Next intCol Next intTbRow Next intPage '由于每个网页的查询结果中都有标题行,但是在工作表中保存数据时,只需要保留第一个标题行,因此代码的循环变量的起始值会有所不同。 objIE.Quit Set objIE = Nothing '关闭ie浏览器 Set objIEDOM = Nothing '释放系统资源 Set objTable = Nothing Set objTR = Nothing End Sub
时间: 2023-02-07 11:12:20 浏览: 148
这个代码块似乎是 VBA 中的一段网页查询代码。它会创建一个 Internet Explorer 对象,然后加载指定的 URL,最后遍历 HTML 表格中的每一行和每一列,并将数据打印在活动工作表中的单元格中。
相关问题
AttributeError: 'DataFrame' object has no attribute 'dim'
这个错误通常是因为 `pandas.DataFrame` 没有 `dim` 属性而导致的。可能是代码中出现了 `dim`,但应该使用 `shape` 属性来获取 DataFrame 的形状。你可以将 `dim` 替换为 `shape`,例如:
```python
import pandas as pd
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4], 'C': [5, 6]})
print(df.shape) # 输出 (2, 3)
```
如果你想要获取 DataFrame 的行数和列数,可以使用 `shape` 属性获取元组 (行数, 列数),然后分别取出:
```python
num_rows = df.shape[0] # 获取行数
num_cols = df.shape[1] # 获取列数
```
这样就可以避免 `AttributeError: 'DataFrame' object has no attribute 'dim'` 错误了。
阅读全文