0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

英英辞書から単語の定義をスクレイピングしてみた

Posted at

参考サイト
https://excel-ubara.com/excelvba4/EXCEL_VBA_401.html
https://powervbadesktop.com/web0/

英検準1級の勉強を始めたので英英辞書から単語の定義を取得するVBAを組んでみた。

WebDriverにwebページの指定をする

Const dictionaryURL As String = "https://www.oxfordlearnersdictionaries.com/definition/english/"

Set Driver = New Selenium.WebDriver

targetUrl = dictionaryURL & word

Driver.AddArgument "headless"
Driver.Start "Chrome"
Driver.Get targetUrl

英英辞書はoxfordを使う
oxfordの辞書は
https://www.oxfordlearnersdictionaries.com/definition/english/
の後に単語を付ければいいので

dictionaryURL & word

で指定している

dictionary
Driver.AddArgument "headless"

上記指定でChromeをバックグラウンドで実行できる

ディベロッパーツールでタグを特定する

単語の定義をドラック > 右クリック > 検証

dictionary

タグを確認する

class="def"であることが分かる

dictionary

タグを指定して要素を特定する

Dim defElements  As WebElements
Dim defs As String
Dim defCnt As Integer
Dim ans As Integer

Set defElements = Driver.FindElementsByClass("def")
    
'すべての説明を結合する
For defCnt = 1 To defElements.Count
    defs = defs & defCnt & vbCrLf & defElements.Item(defCnt).Text & vbCrLf
Next


ans = InputBox("入力する定義を選択してください" & vbCrLf & _
                        "99=全ての定義を入力する" & vbCrLf & vbCrLf & _
                        defs)

Select Case ans
    Case 99
        Cells(ActiveCell.Row, columnEngDesc).Value = defs
    Case Else
        Cells(ActiveCell.Row, columnEngDesc).Value = defElements.Item(ans).Text

End Select

Set defElements = Driver.FindElementsByClass("def")

上記でdefクラスの要素に絞り込む

For defCnt = 1 To defElements.Count
    defs = defs & defCnt & vbCrLf & defElements.Item(defCnt).Text & vbCrLf
Next

すべての定義を結合する

ans = InputBox("入力する定義を選択してください" & vbCrLf & _
                        "99=全ての定義を入力する" & vbCrLf & vbCrLf & _
                        defs)

Select Case ans
    Case 99
        ActiveCell.offset(0,1).Value = defs
    Case Else
        ActiveCell.offset(0,1).Value = defElements.Item(ans).Text

End Select
dictionary

結合した定義をinputboxで表示しどの定義を取得するか番号を入力してもらう
99を入力した場合はすべての定義を入力する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?