2017-01-05 8 views
0

タイトルが意味をなさないことを願っています。この時点での私の問題はかなり具体的ですが、他のドメインを使用している他の人にも関連する解決策があると思います。Excel、VBA:同じドメインに属する複数のhtmlウェブサイトから特定のデータをスクラップする方法

Iは、B列の1000+のURL(B1から始まる)のリストをExcelの文書を持っています。私がVBAを通して達成したいのは、これらのURLのそれぞれを(ある種のループを介して)開き、Webページからテキストの特定の行をC-セルにコピーすることです。私の文書では、リンクはすべて私が味わったビールとそれに対応するページをratebeer.comで参照しています。コードでは、URLの横にあるCセルのビールスタイルを貼り付けます(例:URL https://www.ratebeer.com/beer/3-fonteinen-doesjel/77584/の場合、「Lambic Style - Gueuze」というテキストが表示されます)。私のExcelファイルで)。

申し訳ありませんが、私が見逃していることをそこに同様の答えがある場合、それは検索するために正確なものを言葉知ることは困難ですので、私は非常にVBAを経験していませんよ。

答えて

0

私は、これはPythonでBeautifulsoupとopenpyxlを組み合わせることにより行うことができると思います。

リンクのすべてを行いますが例と同じ形式を持っていますか?

+0

はい、それは私はPythonでプログラムを作成し、それは例のページのために働い – endgame

+0

を変更するだけで、最後の二つの部分ですが、私はそれが他のページのために働くかはわかりません。いくつかの例を私に教えてください。 – pothny3

+0

https://www.ratebeer.com/beer/3-fonteinen-oude-geuze-golden-blend/167701/ https://www.ratebeer.com/beer/3-fonteinen-zwetbe/134551/ます。https: //www.ratebeer.com/beer/alesmith-speedway-stout/14232/ – endgame

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 

特定のニーズに合わせて変更するだけです。

関連する問題