将网页部分内容另存为本地文件

northwolves 2009-09-01 08:49:36
VB6.0 将http://news.csdn.net/ 的人物专访部分(源代码如下)另存为本地文件xxxx.htm ,图片等打包到 xxxx_files,有什么最简单的办法?

 <div class="tabcon">
<h5>人物专访<!-- 人物专访 --></h5>

<dl>
<dt><a href="http://news.csdn.net/a/20090417/210526.html" target="_blank" title="专访龙博Ajax框架创作团队">专访龙博Ajax框架</a></dt>
<dd class="img"><img src="http://info-database.csdn.net/Upload/2009-04-27/z2.jpg" alt="" width="92px" height="68px" /></dd>
<dd>龙博AJAX框架就源于他日常开发中对提高工作效率的渴望。</dd>
</dl>

<dl>
<dt><a href="http://news.csdn.net/a/20090422/210647.html" target="_blank" title="专访Sun公司亚太区主席">专访Sun公司亚太区</a></dt>
<dd class="img"><img src="http://info-database.csdn.net/Upload/2009-04-27/z1.jpg" alt="" width="92px" height="68px" /></dd>
<dd>开源所提倡的开放、分享观念代表了未来技术发展方向。</dd>
</dl>

<dl>
<dt><a href="http://live.csdn.net/" target="_blank" title="UCenter Home开源 助力中国SNS">UCenter Ho</a></dt>
<dd class="img"><img src="http://images.csdn.net/20080606/lgd.jpg" alt="" width="92px" height="68px" /></dd>
<dd>“选择开源是康盛创想始终坚持与用户共赢的价值观的延续。”</dd>
</dl>

<dl>
<dt><a href="http://live.csdn.net/" target="_blank" title="地震中的程序人生">地震中的程序人生</a></dt>
<dd class="img"><img src="http://images.csdn.net/20080528/jueying.jpg" alt="" width="92px" height="68px" /></dd>
<dd>“地震是我们无法控制的,甚至还无法准确预测,可是我们不能因为一次地震就一蹶不振。</dd>
</dl>

<dl>
<dt><a href="http://news.csdn.net/n/20080519/116064.html" target="_blank" title="解读互联网虚拟大脑结构图">解读互联网虚拟大脑结</a></dt>
<dd class="img"><img src="http://images.csdn.net/20080522/liufeng.gif" alt="" width="92px" height="68px" /></dd>
<dd>关于互联网,有两个问题始终摆在人们面前。发展有没有规律可循?互联网最终结局是什么</dd>
</dl>

<dl>
<dt><a href="http://211.100.26.82/CSDN_Live/tw/cc.htm" target="_blank" title="Cruise持续集成工具与实践">Cruise持续集成</a></dt>
<dd class="img"><img src="http://images.csdn.net/20080519/{3FD3F264-070B-4B39-9F47-E302F71E06B6}2392.jpg" alt="" width="92px" height="68px" /></dd>
<dd>敏捷工具Cruise最大的优点就是这些先进功能:软件部署、容易使用和build </dd>
</dl>

<dl>
<dt><a href="http://news.csdn.net/n/20080512/115871.html" target="_blank" title="惠普实验室:创新无国界">惠普实验室:创新无国</a></dt>
<dd class="img"><img src="http://images.csdn.net/20080513/3333.JPG" alt="" width="92px" height="68px" /></dd>
<dd>"科学无国界,和国际接轨,学习国际上先进的技术和研发经验是国内IT人才必不可少的</dd>
</dl>

<dl>
<dt><a href="http://news.csdn.net/n/20080504/115647.html" target="_blank" title="透过韩企看SOA解决方案">透过韩企看SOA解决</a></dt>
<dd class="img"><img src="http://images.csdn.net/20080504/{ABCD6C4F-305E-4119-BFEC-30DA41E04D6F}副本.jpg" alt="" width="92px" height="68px" /></dd>
<dd>可以说,从供需双方的表现来看,SOA已经进入了技术和产品的全面推广期。</dd>
</dl>







</div>
...全文
672 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingyanwei 2009-09-02
  • 打赏
  • 举报
回复
我用的都是最繁琐的遍历方法。
chinaboyzyq 2009-09-02
  • 打赏
  • 举报
回复
为了通用,修改一下ss = "<body>",修改成ss = "<body"


Sub getWeb()

Dim X As XMLHTTP
tmpth = "c:\temp.htm"
URL = "http://www.baidu.com/"
Set X = New XMLHTTP
X.Open "GET", URL, False
X.send
s = X.responseText
ss = "<body"
arr = Split(s, ss)
ss = ss & arr(1)
If Dir(tmpth) <> "" Then Kill tmpth

Open tmpth For Output As 1
Print #1, , ss
Close 1
WebBrowser1.Navigate2 tmpth
Set bd = WebBrowser1.Document.body
Do While bd Is Nothing
DoEvents
Set bd = WebBrowser1.Document.body
Loop
SendKeys "c:\baidu.htm"
SendKeys "{ENTER}"
WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
Kill tmpth
End Sub


jhone99 2009-09-02
  • 打赏
  • 举报
回复
Private    Sub   SavePicture(szURL,   fName)    '保存图片       
'网页路径,文件名
Dim x As XMLHTTP
Dim oStream As ADODB.Stream
Dim xx As String

Set x = New XMLHTTP
x.Open "GET", szURL, False
x.send
xx = app.path + "/"
Set oStream = New ADODB.Stream
oStream.Type = 1
oStream.Open
oStream.Write x.responseBody
oStream.SaveToFile xx + fName
oStream.Close
End Sub

' 简单实现

call SavePicture("http://expert.csdn.net/images/csdn.gif";,"abc.gif")

'功能:取得网址中的所有链接名称和地址
'需要要引用 Microsoft HTML Object Library

Private Sub GetLinks()
Dim Doc As IHTMLDocument2
Dim All As IHTMLElementCollection
Dim L As Integer
Dim i As Integer
Dim Varl As Variant

Set Doc = WebBrowser1.document
Set All = Doc.images '取图片的连接 doc.links 取文字链接
L = All.length
For i = 0 To L - 1
Set Varl = All.Item(i, varempty)
List1.AddItem ("地址:" & Varl.href) 'item.innertext 取文本链接名称
Set Varl = Nothing
Next i
Set All = Nothing
Set Doc = Nothing
End Sub

'然后在查找JPG,BMP等图片文件
chinaboyzyq 2009-09-02
  • 打赏
  • 举报
回复
ldy888的程序在 百度 中文全是乱码,将程序修改如下:


Sub getWeb()
Dim X As XMLHTTP
tmpth = "c:\temp.htm"
URL = "http://www.baidu.com/"
Set X = New XMLHTTP
X.Open "GET", URL, False
X.send
s = X.responseText
ss = "<body>"
arr = Split(s, ss)
ss = ss & arr(1)
If Dir(tmpth) <> "" Then Kill tmpth

Open tmpth For Output As 1
Print #1, , ss
Close 1
WebBrowser1.Navigate2 tmpth
Set bd = WebBrowser1.Document.body
Do While bd Is Nothing
DoEvents
Set bd = WebBrowser1.Document.body
Loop
SendKeys "c:\baidu.htm"
SendKeys "{ENTER}"
WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
Kill tmpth
End Sub

king06 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ldy888 的回复:]
最后完成的,c:\人物专访.htm 对应文件夹下有图片,页面中图片地址也是本机地址。
[/Quote]
高,学习~`
chinaboyzyq 2009-09-02
  • 打赏
  • 举报
回复
一般如下可以完成:
1、取得网页的HTML代码
2、正则取出图片链接地址
3、xmlhttp下载
4、ADO.Stream保存
northwolves 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ldy888 的回复:]
最后完成的,c:\人物专访.htm 对应文件夹下有图片,页面中图片地址也是本机地址。
VB codeSub ldy888()Dim XAs XMLHTTP
tmpth="c:\temp.htm"
URL="http://news.csdn.net/"Set X=New XMLHTTP
X.Open"GET", URL,False
X.send
s= X.responseText
ss="<div class=""tabcon"">"
arr=Split(s, ss)
ss= ss& arr(1)Dim bt()AsByte
bt= StrConv(ss,128)If Dir(tmpth)<>""Then Kill tmpth

Open tmpthFor BinaryAs1
Put #1, , bt
Close1
WebBrowser1.Navigate2 tmpthSet bd= WebBrowser1.Document.bodyDoWhile bdIsNothing
DoEventsSet bd= WebBrowser1.Document.bodyLoop
SendKeys"c:\人物专访.htm"
SendKeys"{ENTER}"
WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
Kill tmpthEnd Sub
[/Quote]

Works perfect! Million Thanks!!!
无·法 2009-09-02
  • 打赏
  • 举报
回复
可否找到ie浏览器中另存为这个菜单的外部调用方法?好像以前看到有人发过这样的问题
ldy888 2009-09-02
  • 打赏
  • 举报
回复
最后完成的,c:\人物专访.htm 对应文件夹下有图片,页面中图片地址也是本机地址。

Sub ldy888()

Dim X As XMLHTTP
tmpth = "c:\temp.htm"
URL = "http://news.csdn.net/"
Set X = New XMLHTTP
X.Open "GET", URL, False
X.send
s = X.responseText
ss = "<div class=""tabcon"">"
arr = Split(s, ss)
ss = ss & arr(1)
Dim bt() As Byte
bt = StrConv(ss, 128)
If Dir(tmpth) <> "" Then Kill tmpth

Open tmpth For Binary As 1
Put #1, , bt
Close 1
WebBrowser1.Navigate2 tmpth
Set bd = WebBrowser1.Document.body
Do While bd Is Nothing
DoEvents
Set bd = WebBrowser1.Document.body
Loop
SendKeys "c:\人物专访.htm"
SendKeys "{ENTER}"
WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
Kill tmpth
End Sub
lyserver 2009-09-02
  • 打赏
  • 举报
回复

Private Sub Form_Load()
Me.WebBrowser1.Navigate2 "http://news.csdn.net/"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If URL = "http://news.csdn.net/" Then
Dim fn As Integer
Dim div As Object
For Each div In Me.WebBrowser1.Document.getElementsByTagName("DIV")
If div.className = "tabcon" Then Exit For
Next
fn = FreeFile
Open "c:\myhtml.html" For Output As #fn
Print #fn, "<html><body>" & div.innerHTML & "</body></html>"
Close #fn
MsgBox "人物专访保存完毕!"
End If
End Sub
ldy888 2009-09-02
  • 打赏
  • 举报
回复
每个网页都不一样,没有通用的代码。
百度的那个 取 X.responseText 是不行的,在我这里乱码
该取 X.responseBody
northwolves 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 modest 的回复:]
WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
[/Quote]
多谢回复。
但这样并未生成*_files目录,htm 文件中仍是其原始链接
northwolves 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 syssz 的回复:]
将本段代码拷入一个新建的Word空白页,另存为xxxx.htm,将其中的图片直接下载到 xxxx_files,不知是否最简单.
[/Quote]

单个任务这样做没问题。但目前面临的是近万个类似的网页,下载到*.mht 格式没有问题,但下载到*.htm,并未生成xxxx_files 目录,我的代码如下:
Open TEMPFILE For Output As #1    'temp html file used for read by word application
Print #1, TEMP
Close #1
'save as word document

Set MYDOC = myword.Documents.Open(FileName:=TEMPFILE, Format:=wdOpenFormatAuto)
If MYDOC.Content.Hyperlinks.Count > 0 Then
For K = MYDOC.Content.Hyperlinks.Count To 1 Step -1
MYDOC.Content.Hyperlinks(K).Delete
Next
End If
MYDOC.SaveAs folder & "\xxxx.htm", FileFormat:=wdFormatHTML
MYDOC.Close
Kill TEMPFILE
northwolves 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 syssz 的回复:]
将本段代码拷入一个新建的Word空白页,另存为xxxx.htm,将其中的图片直接下载到 xxxx_files,不知是否最简单.
[/Quote]

单个任务这样做没问题。但目前面临的是近万个类似的网页,下载到*.mht 格式没有问题,但下载到*.htm,并未生成xxxx_files 目录,我的代码如下:
Open TEMPFILE For Output As #1    'temp html file used for read by word application
Print #1, TEMP
Close #1
'save as word document

Set MYDOC = myword.Documents.Open(FileName:=TEMPFILE, Format:=wdOpenFormatAuto)
If MYDOC.Content.Hyperlinks.Count > 0 Then
For K = MYDOC.Content.Hyperlinks.Count To 1 Step -1
MYDOC.Content.Hyperlinks(K).Delete
Next
End If
MYDOC.SaveAs folder & "\xxxx.htm", FileFormat:=wdFormatHTML
MYDOC.Close
Kill TEMPFILE
迈克揉索芙特 2009-09-01
  • 打赏
  • 举报
回复
用Inet做起来可能更简单些,分析字符串是避免不了的。
迈克揉索芙特 2009-09-01
  • 打赏
  • 举报
回复
WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
SYSSZ 2009-09-01
  • 打赏
  • 举报
回复
将本段代码拷入一个新建的Word空白页,另存为xxxx.htm,将其中的图片直接下载到 xxxx_files,不知是否最简单.
贝隆 2009-09-01
  • 打赏
  • 举报
回复
不懂,帮顶
从多个网页的完整或选定内容创建Microsoft Word文档。 此扩展程序将完整的网页网页的选定部分转换为Microsoft Word文档(docx)。您还可以选择将来自多个网页内容或仅将其中的选定部分转换为单个Word文档。转换后的文档可以下载到本地磁盘。该扩展读取当前页面或所选部分HTML结构,并将其转换为相应的docx结构。限制:-1.安装/更新-安装或更新后,此扩展名不适用于在安装/更新之前打开的标签页,除非重新加载了这些标签页或重新启动了chrome 2.我可以转换什么? -此扩展程序可以将除以下页面之外的任何网页转换为Microsoft Word文档-所有Chrome网上应用店页面(包括此页面) Urls以chrome://开头 chrome:// extensions以chrome-extension://开头的URL。3.某些转换后的页面看起来不一样-所有内容都被转换为Word文档,其中大部分格式保持不变。布局可能会有所不同 4.为什么某些网页保存的文件显示方形框? -对于非英语的网页,尤其会发生这种情况。目前,应用程序不支持所有语言所需的字体转换 5.为什么本地HTML文件不起作用? -出于安全原因,Chrome浏览器不允许扩展名访问File Urls,除非得到用户的明确许可。如果您希望扩展程序适用于本地HTML文件,那么您要做的就是-1.访问扩展程序管理页面(chrome:// extensions) 2.转到“将网页另存为Word文档”扩展名 3.选中“允许访问文件URL”复选框 4.重新加载本地HTML文件。 支持语言:English

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧