帮我写段vba代码用来爬取网页:http://data.10jqka.com.cn/market/ggsyl/%22%20&%20%22field/syl/order/desc/page/ 并把1至84页的数据,写入当前的excel里
时间: 2023-08-22 08:04:57 浏览: 124
### 回答1:
首先,你需要安装 Microsoft Internet Controls 和 Microsoft HTML Object Library。
然后,你可以使用下面的代码来爬取网页:
```vba
Sub GetWebPage()
Dim url As String, lastRow As Long
Dim ie As InternetExplorer, html As HTMLDocument
' 设置要爬取的网址
url = "http://data.10jqka.com.cn/market/ggsyl/"
' 创建 InternetExplorer 对象
Set ie = New InternetExplorer
' 设置不显示浏览器窗口
ie.Visible = False
' 在 InternetExplorer 中打开网址
ie.navigate url
' 等待页面加载完毕
Do While ie.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
' 获取网页源代码
Set html = ie.document
' 在第一个工作表的第一行插入标题
With ThisWorkbook.Worksheets(1)
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
.Cells(lastRow, 1).Value = html.Title
End With
' 关闭 InternetExplorer 窗口
ie.Quit
End Sub
```
你也可以使用下面的代码来获取网页中的特定元素:
```vba
Sub GetElementById()
Dim url As String, lastRow As Long
Dim ie As InternetExplorer, html As HTMLDocument
Dim elem As Object
' 设置要爬取的网址
url = "http://data.10jqka.com.cn/market/ggsyl/"
' 创建 InternetExplorer 对象
Set ie = New InternetExplorer
' 设置不显示浏览器窗口
ie.Visible = False
' 在 InternetExplorer 中打开网址
ie.navigate url
' 等待页面加载完毕
Do While ie.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
' 获取网页
### 回答2:
VBA是一种可用于Excel的编程语言,可用于自动化各种任务,包括网页数据爬取。以下是一个可以用来爬取http://data.10jqka.com.cn/market/ggsyl/网页的VBA代码示例:
```vba
Sub 爬取网页数据()
' 设置引用 Microsoft XML, v6.0
Dim xmlHTTP As Object
Dim htmlDoc As Object
Dim tableNodeList As Object
Dim rowNodeList As Object
Dim cellNode As Object
Dim rowNum As Integer
Dim colNum As Integer
' 创建XMLHTTP对象
Set xmlHTTP = CreateObject("MSXML2.XMLHTTP")
xmlHTTP.Open "GET", "http://data.10jqka.com.cn/market/ggsyl/", False
xmlHTTP.send
' 创建HTML文档对象
Set htmlDoc = CreateObject("htmlfile")
htmlDoc.body.innerHTML = xmlHTTP.responseText
' 获取表格节点列表
Set tableNodeList = htmlDoc.getElementsByTagName("table")
If tableNodeList.Length > 0 Then
' 获取第一个表格的行节点列表
Set rowNodeList = tableNodeList(0).getElementsByTagName("tr")
' 循环遍历行节点列表
For rowNum = 0 To rowNodeList.Length - 1
' 获取行的单元格节点列表
Set cellNodeList = rowNodeList(rowNum).getElementsByTagName("td")
' 循环遍历单元格节点列表
For colNum = 0 To cellNodeList.Length - 1
' 获取单元格的文本内容并输出到Excel
Cells(rowNum + 1, colNum + 1).Value = cellNodeList(colNum).innerText
Next colNum
Next rowNum
End If
End Sub
```
这段代码通过创建XMLHTTP对象发送GET请求获取网页内容,然后通过创建HTML文档对象解析网页,最后以表格形式输出到Excel。你可以通过运行这段代码来爬取并显示http://data.10jqka.com.cn/market/ggsyl/网页的表格数据。
### 回答3:
首先,你需要在VBA中添加对Microsoft XML, v6.0引用,在VBA编辑器中选择"工具"菜单,然后选择"引用",并勾选"Microsoft XML, v6.0"。
接下来,你可以使用以下代码来爬取网页数据:
```vba
Sub 爬取网页数据()
' 创建新的XML Http请求对象
Dim xmlhttp As Object
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
' 定义网页URL
Dim url As String
url = "http://data.10jqka.com.cn/market/ggsyl/"
' 发送HTTP GET请求
xmlhttp.Open "GET", url, False
xmlhttp.setRequestHeader "Content-Type", "text/xml"
xmlhttp.send
' 获取响应文本
Dim responseText As String
responseText = xmlhttp.responseText
' 将响应文本保存到文件
Dim fileNo As Integer
fileNo = FreeFile
Open "C:\路径\文件名.html" For Output As fileNo
Print #fileNo, responseText
Close fileNo
' 清除对象
Set xmlhttp = Nothing
End Sub
```
以上代码首先创建了一个新的XML Http请求对象,然后指定要爬取的网页URL。接下来发送一个HTTP GET请求,获取响应文本。最后,将响应文本保存到指定路径的文件中。
注意:代码中的“C:\路径\文件名.html”应该替换为你想保存网页的文件路径和文件名。
阅读全文