VBA代码、网页数据采集、爬取文章

应粉丝要求做一篇爬取网页上的文章。

实现功能:爬取网站上的一篇文章并保存到记事本上。

下面是代码分享

Sub 采集网页上的文章保存到记事本()

Dim oHtml As Object

Set oHtml = VBA.CreateObject('WinHttp.WinHttpRequest.5.1') '创建http对象

Dim sUrl As String

'指定要抓取的网站

sUrl = 'http://meiwenjx.com/article/143357.html'

With oHtml

.Open 'GET', sUrl, False '向服务器发送指定链接地址

.send '发送

'获取返回的字节数组

bResult = .ResponseBody

'按照指定的字符编码显示

sResult = bytestobstr(bResult, 'GB2312')

shu = Split(sResult, '<p>') '拆分返回来字符串赋给数组

For wun = 1 To UBound(shu) - 1 '循环数组最大下标

js = js & Chr(13) & Replace(shu(wun), '</p>', '') '把数组里的内容写变量

Next wun

js2 = Split(shu(UBound(shu)), '</p>') '按指定字符拆分内容并赋给变量

Open ThisWorkbook.Path & '\网文采集.txt' For Output As #1 '打开当前工作簿下的记事本,如果没有就创建

Print #1, js & js2(0) '把内容写进记事本里

Close #1 '关闭记事本

End With

Set oHtml = Nothing '清空对象

MsgBox '网文采集完成'

End Sub

'下面是采集用到的Bstr编码转换函数

Function bytestobstr(strbody, codebase)

Dim objstream

On Error Resume Next

Set objstream = CreateObject('adodb.stream')

With objstream

.Type = 1

.Mode = 3

.Open

.write strbody

.Position = 0

.Type = 2

.Charset = codebase

bytestobstr = .readtext

End With

objstream.Close

Set objstream = Nothing

If Err.Number <> 0 Then bytestobstr = ''

On Error GoTo 0

End Function

如果想多学习一点可以去我公众号看,上面写得详细一点

(0)

相关推荐