即席のコードですので、少し汚いかもしれませんが、以下のようになりました。
コードの簡単な説明です。
requestsモジュールで、HTMLを取得します。
そして、bs4でそれを解析してreで正規表現にかけて取得する感じですね。
この際、正規表現の絞りが甘く、変な文字が入ってきたので、replaceを使って取り除いています。
python
1from bs4 import BeautifulSoup
2import requests
3import re
4from pprint import pprint
5
6url = 'https://eikaiwa.dmm.com/blog/4690/'
7html = requests.get(url).text
8soup = BeautifulSoup(html, "html.parser")
9
10tmp_list = soup.find_all(text=re.compile("by"))
11name_list = []
12for line in tmp_list:
13 if '(' in line:
14 name_list.append(line.replace('\nby ', '').replace('\nby\xa0', ''))
15pprint(name_list)
16
出力結果
['Abraham Lincoln(エイブラハム・リンカーン)',
'Mahatma Gandhi(ガンジー)',
'Johann Wolfgang von Goethe(ゲーテ)',
'Louisa May Alcott(ルイーザ・メイ・オルコット)',
'Walt Disney(ウォルト・ディズニー)',
'Walt Disney(ウォルト・ディズニー)',
'Winston Churchill(ウィンストン・チャーチル)',
'Elbert Hubbard\u3000(エルバート・ハバード)',
'Ralph Waldo Emerson(エマーソン)',
'Zig Ziglar(ジグ・ジグラー)',
'Helen Keller(ヘレン・ケラー)',
'Coco Chanel(ココ・シャネル)',
'George Bernard Shaw(バーナード・ショー)',
'Eleanor Roosevelt(エレノア・ルーズベルト)',
'Pope John Paul II(ヨハネ・パウロ2世)',
'René Descartes(ルネ・デカルト)',
'Albert Einstein(アインシュタイン)',
'Aristotle(アリストテレス)',
'Ralph Waldo Emerson(エマーソン)',
'Peter Drucker(ピーター・ドラッカー)',
'Aldous Huxley(オルダス・ハクスリー)',
'Mother Teresa(マザー・テレサ)',
'Mother Teresa(マザー・テレサ)',
'14th Dalai Lama(ダライ・ラマ14世)',
'Martin Luther King, Jr.(マーティン・ルーサー・キング・ジュニア)',
'Nelson Mandela(ネルソン・マンデラ)',
'Abraham Lincoln(エイブラハム・リンカーン)',
'Albert Einstein(アインシュタイン)',
'Thomas Edison(トーマス・エジソン)',
'Charlie Chaplin(チャーリー・チャップリン)',
'Abraham Lincoln(エイブラハム・リンカーン)',
'Auguste Rodin(オーギュスト・ロダン)',
'Dale Carnegie(デール・カーネギー)',
'Antoine de Saint-Exupéry(サン=テグジュペリ)',
'Francis Bacon(フランシス・ベーコン)',
'René Descartes(ルネ・デカルト)',
'Michel de Montaigne(ミシェル・ド・モンテーニュ)',
'Napoleon Hill(ナポレオン・ヒル)',
'Johann Wolfgang von Goethe(ヨハン・ヴォルフガング・フォン・ゲーテ)',
'Will Rogers(ウィル・ロジャース)',
'Albert Schweitzer(アルバート・シュバイツァー)']