ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: dongdonggege

[求助] VBA 怎样批量下载网页图片?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-12 07:13 | 显示全部楼层
前面的那几个库需要安装一下

TA的精华主题

TA的得分主题

发表于 2024-8-12 09:22 | 显示全部楼层
我一般下载文件用下面这段,忘记哪个大佬提供的了
Sub requestimage(picurl$, picname$) '图片url,图片名称
Dim brr() As Byte
With CreateObject("msxml2.serverxmlhttp")
                .Open "get", picurl, False
                .send
                Do Until .Status = 304 Or .Status = 200
                    DoEvents
                    If Timer - t >= 5 Then
                        brr = ""
                        GoTo 1
                    End If
                Loop
                    brr = .Responsebody
1:

            WriteImage ThisWorkbook.path, brr, picname
End With
End Sub
Private Sub WriteImage(path$, arr() As Byte, index$)
    With CreateObject("scripting.filesystemobject")
        If Not .FolderExists(path & "\mm") Then '假设保存在mm文件夹中
            .createfolder (path & "\mm")
        End If
    End With
    Open path & "\mm\" & Replace(index, "/", "\", , , vbBinaryCompare) For Binary As #1
    Put #1, , arr
    Close #1
End Sub

TA的精华主题

TA的得分主题

发表于 2024-8-12 09:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-12 10:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 MR_PP 于 2024-8-12 10:59 编辑

[code][/code]

TA的精华主题

TA的得分主题

发表于 2024-8-12 10:30 | 显示全部楼层
  1. Sub ToPDF()
  2.     Dim http As Object
  3.     Dim html As Object
  4.     Dim imgTags As Object
  5.     Dim imgTag As Object
  6.     Dim imgUrl As String
  7.     Dim folderPath As String
  8.     Dim fileName As String
  9.     Dim i As Integer
  10.     Dim wdApp As Object
  11.     Dim wdDoc As Object
  12.    
  13.     ' 设置保存图片的文件夹路径
  14.     folderPath = ThisWorkbook.path & "\mm" ' 请更改为你的文件夹路径
  15.     If Right(folderPath, 1) <> "" Then folderPath = folderPath & ""
  16.    
  17.     ' 创建HTTP和HTML对象
  18.     Set http = CreateObject("MSXML2.XMLHTTP")
  19.     Set html = CreateObject("HTMLFile")
  20.    
  21.     ' 请求网页
  22.     http.Open "GET", "https://tieba.baidu.com/p/1909682384", False
  23.     http.send
  24.    
  25.     ' 将响应加载到HTML对象中
  26.     html.body.innerHTML = http.responseText
  27.    
  28.     ' 获取所有图片标签
  29.     Set imgTags = html.getElementsByTagName("img")
  30.    
  31.     ' 初始化计数器
  32.     i = 0
  33.    
  34.     ' 遍历每个图片标签并下载图片
  35.     For Each imgTag In imgTags
  36.         imgUrl = imgTag.src
  37.         
  38.         ' 检查URL是否有效
  39.         If imgUrl <> "" Then
  40.             On Error Resume Next
  41.             
  42.             ' 生成文件名
  43.             fileName = folderPath & "Image" & i & ".jpg" ' 可以根据需要修改文件名格式
  44.             
  45.             ' 下载图片
  46.             With CreateObject("MSXML2.XMLHTTP")
  47.                 .Open "GET", imgUrl, False
  48.                 .send
  49.                 If .Status = 200 Then
  50.                     Dim stream As Object
  51.                     Set stream = CreateObject("ADODB.Stream")
  52.                     stream.Type = 1 ' 二进制数据
  53.                     stream.Open
  54.                     stream.Write .responseBody
  55.                     stream.SaveToFile fileName, 2 ' 保存文件
  56.                     stream.Close
  57.                 End If
  58.             End With
  59.             
  60.             i = i + 1
  61.             On Error GoTo 0
  62.         End If
  63.     Next imgTag
  64.     On Error Resume Next
  65.     ' 创建Word应用程序和文档
  66.     Set wdApp = CreateObject("Word.Application")
  67.     Set wdDoc = wdApp.Documents.Add
  68.    
  69.     ' 插入下载的图片到Word文档
  70.     For j = 0 To i - 1
  71.         fileName = folderPath & "Image" & j & ".jpg"
  72.         wdDoc.InlineShapes.AddPicture fileName
  73.         wdDoc.Content.InsertParagraphAfter ' 插入段落以分隔图片
  74.     Next j
  75.    
  76.     ' 导出为PDF
  77.     wdDoc.SaveAs2 folderPath & "DownloadedImages.pdf", 17 ' 17代表PDF格式
  78.     wdDoc.Close
  79.     wdApp.Quit
  80.    
  81.     MsgBox "下载完成,共下载了 " & i & " 张图片,并导出为PDF!", vbInformation
  82. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2024-8-12 14:23 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub WebImageGrabber()
    Dim xml As Object, html As Object
    On Error Resume Next
    Set xml = CreateObject("MSXML2.XMLHTTP")
    xml.Open "GET", "https://tieba.baidu.com/p/1909682384", False
    xml.send '请求

   Set html = CreateObject("HtmlFile")
   html.body.innerHTML = xml.responseText
   With ActiveDocument '添加
        For Each img In html.images
            .InlineShapes.AddPicture img.src
        Next
    End With

    Set xml = Nothing '释放
    Set html = Nothing
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-12 17:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tspliu 发表于 2024-8-12 09:22
我一般下载文件用下面这段,忘记哪个大佬提供的了
Sub requestimage(picurl$, picname$) '图片url,图片名 ...

老师,你好,今天开会学习,刚到家。你的函数不会用,麻烦你发个完整的程序,谢谢。

TA的精华主题

TA的得分主题

发表于 2024-8-12 17:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dongdonggege 发表于 2024-8-12 17:18
老师,你好,今天开会学习,刚到家。你的函数不会用,麻烦你发个完整的程序,谢谢。

sub aa()
requestimage url , picname
endsub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-12 17:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tspliu 发表于 2024-8-12 17:23
sub aa()
requestimage url , picname
endsub

你的URL哪来的,而且图片的网址,有的前面是https,有点是about,你怎么处理?有的是jpg图片,有的是png图片,怎么处理?特别是网址前面是about,处理错误,结果一个文件都没下载下来。

TA的精华主题

TA的得分主题

发表于 2024-8-12 19:43 | 显示全部楼层
本帖最后由 tspliu 于 2024-8-12 19:45 编辑
dongdonggege 发表于 2024-8-12 17:26
你的URL哪来的,而且图片的网址,有的前面是https,有点是about,你怎么处理?有的是jpg图片,有的是png图 ...

那你不是不会下载图片,是不会基础的网爬和字符串处理。。。。我也不太帮得了你,我只会修修改改,红圈的这种就是url,正则啥的方法都可以提取
编报告(修改).jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 12:28 , Processed in 0.041391 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表