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

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

相关文章

面试每日一问:在开发网页时如何保证 HTML 代码的质量?

保证 HTML 代码的质量可以提高网页的性能和用户体验,下面列举一些常用的方法:编写符合标准的 HTML 代码,遵循 W3C 标准,避免使用过时的标记和属性,例如使用 div 替代 table 布局等...

一个HTML5动画,布局只要一行代码,你还真别不信

需要源码请评论后加前端学习群470593776课题:HTML5炫酷雪花飘落动态网页背景特点:无任何js痕迹,纯css3动画,需要熟练掌握html5新特性。 对于细节和兼容性的处理要到位,代码量很少,布...

Looking Glass推出新颖的全息图像格式 网页代码嵌入像视频一样简单

一家名叫 Looking Glass 的全息显示公司,正在积极推广一种新颖的 3D 图像格式。可知艺术家们能够在广泛使用的 3D 艺术软件上进行制作,并在大多数终端硬件上予以展示。由 Looking...