Excel,VBA:如何从属于同一域的多个html网站中抓取某些数据

时间:2017-01-05 19:59:50

标签: excel vba excel-vba web-scraping

希望标题有意义。我现在的问题是相当具体的,但我认为这是一个与使用其他域名的其他人相关的解决方案。

我有一个excel文档,其中包含B列中1000多个URL的列表(从B1开始)。我想通过VBA实现的是打开每个URL(通过某种循环)并将特定的文本行从网页复制到C-cell。在我的文档中,链接都是指我尝过的不同啤酒及其在ratebeer.com上的相应页面。我希望代码做的是将网站上提到的啤酒风格粘贴在URL旁边的C-cell中(例如,对于URL https://www.ratebeer.com/beer/3-fonteinen-doesjel/77584/,我希望文本" Lambic Style - Gueuze"出现在我的excel文件中。)

很抱歉,如果我有错过的类似答案,我对VBA缺乏经验,因此很难知道要搜索的确切字词。

2 个答案:

答案 0 :(得分:0)

我认为这可以通过在Python中结合Beautifulsoup和openpyxl来完成。

所有链接的格式是否与示例相同?

答案 1 :(得分:0)

这应该做你想要的。

Sub Sample()


Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = True

Dim wsSheet As Worksheet, Rows As Long, links As Variant, IE As Object, link As Variant
Set wb = ThisWorkbook
Set wsSheet = wb.Sheets("Sheet1")

Set IE = New InternetExplorer

Rows = wsSheet.Cells(wsSheet.Rows.Count, "A").End(xlUp).row
links = wsSheet.Range("A1:A" & Rows)

With IE
    .Visible = True
    For Each link In links
        .navigate (link)
        While .Busy Or .ReadyState <> 4: DoEvents: Wend
        wsSheet.Range("B" & Rows).Value = .Document.body.innerText
    Next link
End With

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

只需修改它以满足您的特定需求。