Excel VBA技术求助:实现网页图片与文本抓取并写入Excel
解决VBA抓取商品页面数据并写入Excel的问题
嘿,你已经搞定了打开商品页面的第一步,接下来咱们把抓取数据和写入Excel的功能补上!我帮你调整了代码,还加了详细注释,你跟着步骤来就行:
第一步:添加必要的VBA引用
打开VBA编辑器(按Alt+F11),点击顶部菜单栏的「工具」→「引用」,在弹出的窗口里勾选Microsoft HTML Object Library和Microsoft Internet Controls,然后点击确定。这一步是让VBA能正确识别网页的DOM元素对象。
第二步:替换为完整的功能代码
把下面的代码替换你原来的SearchCC过程,它会帮你抓取商品名称、价格、图片链接,自动写入当前Excel工作表:
Sub SearchCC() Dim SearchString As String Dim IE As New InternetExplorer Dim doc As HTMLDocument Dim ws As Worksheet Dim productName As Object Dim productPrice As Object Dim productImg As Object ' 获取用户输入的商品编码 SearchString = InputBox("请输入商品编码(如CPINT00038):") If SearchString = "" Then Exit Sub ' 如果用户取消输入,直接退出 ' 初始化Excel工作表(用当前激活的工作表) Set ws = ActiveSheet ' 打开IE并导航到目标页面(修正了原URL的空格问题) IE.Visible = True IE.Navigate "http://www.canadacomputers.com/search_results.php?search_in=&keywords=" & SearchString ' 等待页面完全加载 While IE.Busy Or IE.ReadyState <> 4 DoEvents Wend ' 获取网页文档对象 Set doc = IE.Document ' 抓取商品数据(这里的选择器需要根据目标页面实际HTML结构调整,我举个常见例子) ' 抓取商品名称 On Error Resume Next ' 防止找不到元素时报错 Set productName = doc.querySelector(".product-title a") On Error GoTo 0 If Not productName Is Nothing Then ws.Range("A1").Value = "商品名称" ws.Range("A2").Value = productName.innerText Else ws.Range("A2").Value = "未找到商品名称" End If ' 抓取商品价格 On Error Resume Next Set productPrice = doc.querySelector(".price-current") On Error GoTo 0 If Not productPrice Is Nothing Then ws.Range("B1").Value = "商品价格" ws.Range("B2").Value = productPrice.innerText Else ws.Range("B2").Value = "未找到商品价格" End If ' 抓取商品图片链接 On Error Resume Next Set productImg = doc.querySelector(".product-image img") On Error GoTo 0 If Not productImg Is Nothing Then ws.Range("C1").Value = "图片链接" ws.Range("C2").Value = productImg.src ' 如果你想直接把图片插入Excel,解开下面的注释 ' ws.Shapes.AddPicture _ ' Filename:=productImg.src, _ ' LinkToFile:=msoFalse, _ ' SaveWithDocument:=msoTrue, _ ' Left:=ws.Range("D2").Left, Top:=ws.Range("D2").Top, Width:=100, Height:=100 Else ws.Range("C2").Value = "未找到图片链接" End If ' 关闭IE(可选,如果你想保留页面查看可以注释掉) ' IE.Quit ' Set IE = Nothing End Sub
关键说明
- 修正了原URL的问题:你原来的链接里
?后面多了个空格,会导致跳转异常,我已经去掉了这个空格。 - 元素选择器调整:代码里的
.product-title a、.price-current这些是CSS选择器,你需要打开目标商品页面,按F12查看开发者工具,找到对应数据的实际class或id,替换成你页面里的真实选择器,这样才能准确抓取到数据。 - 错误处理:加了
On Error Resume Next来避免因为找不到元素导致代码崩溃,同时会在Excel里提示“未找到”。 - 图片插入:如果想直接把图片插入Excel,解开代码里的注释部分,图片会插入到D2单元格位置,你可以调整位置和大小。
内容的提问来源于stack exchange,提问作者txxghostxxt
相关产品推荐
相关产品推荐

