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?

pythonでweblioスクレイピング①(ブックマークからURL取得)

Posted at

断り
これは4年ほど前に書いた記事です。
当時は別のアカウントで公開していましたが、アカウントを移行することになったので、こちらに改めて投稿しています。
内容は学部生の頃に書いたもので、コードもだいぶ拙いところがあると思いますが、その点はご容赦ください。

動機

netflixで洋画を見たり、英語のサイトで知らない単語が出てくるたびに、調べてブックマークするけど、復習をしないのでブックマークの数だけどんどん増えていく。なんとかしたいな

全体像

長くなりそうなので全3回に分ける
1.ブックマークからurl取得
2.urlをもとにスクレイピング,1と2を連結
3.(おまけ)スクレイピングした情報をgooglespreadsheetに出力

今回

  1. 単語をブックマークして、一つのフォルダにまとめる
  2. 1のフォルダからurlを取得
  3. 単語をスクレイピング
  4. googlespreadsheetにまとめる

[1-1]下準備

weblioをブックマークして一つのフォルダにまとめておきます。
image.png
このようにブックマークバーの一番初めに置いておくと楽かもしれません。
ちなみに、場所はどこでもいいのですが、後でブックマークのpathを指定するのでわかりやすい場所がいいと思います

ブックマークのデータの格納場所 確認

この確認はしてもしなくても問題ないとは思いますが、確認したい人は以下のコマンドで確認してください

windowsの場合コマンドプロンプトから

C:\Users\user>cd AppData\\Local\\Google\\Chrome\\User Data\\Default
C:\Users\user\AppData\Local\Google\Chrome\User Data\Default>dir

とするといろいろ出てきますが、その中に

2022/05/27  22:08           472,473 Bookmarks

のようなものがあるのでブックマークのデータの格納場所が

'\\Users\\{username}\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Bookmarks'

であることが確認できます。
エクスプローラから確認する場合には、隠しファイルを表示する必要があります

また、まっくの場合は

/Users/{ユーザ名}/Library/Application Support/Google/Chrome/Default/Bookmarks

となるようです。

コード

とりあえず全文(PCのユーザ名は変更してください)

getURL.py
import json

bookmark_path = '\\Users\\PCのユーザ名\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Bookmarks'

with open(bookmark_path,encoding = 'utf-8_sig') as f:
    bookmark_data = json.load(f)

bookmarks = bookmark_data['roots']['bookmark_bar']['children'][0]['children']

def get_weblio_url(bookmark):
    if 'Weblio' in bookmark['name']:#Wは大文字
        return bookmark['url']

urls = filter(lambda url:url is not None, list(map(get_weblio_url,bookmarks)) )
print(list(urls))

ブックマークからURL取得

getURL.py
bookmark_path = '\\Users\\PCのユーザ名\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Bookmarks'

with open(bookmark_path,encoding = 'utf-8_sig') as f:
    bookmark_data = json.load(f)

jsonファイルを開いてbookmark_dataという変数に代入します。pythonではjsonファイルを辞書型で扱うことに注意してください。
print(type(bookmark_data))
として確認してみてください。

getURL.py
bookmarks = bookmark_data['roots']['bookmark_bar']['children'][0]['children']

ブックマークフォルダの内容をbookmarksに代入します。(僕の場合は[1-1]で見せたweblioというフォルダ)
['bookmark_bar']['children'][0]['children'] は

['bookmark_bar']  ・・・ ブックマークバー
['children']    ・・・ の中の

[0]        ・・・ 0番目のフォルダ
['children']    ・・・ の中の

のように読むと目当てのフォルダを指定しやすいと思います。

getURL.py
def get_weblio_url(bookmark):
    if 'Weblio' in bookmark['name']:#Wは大文字
        return bookmark['url']

関数を定義します。
名前の中に'Weblio'という文字が入って入ればブックマーク先のURLを返すといった関数です。
こうすることで、weblio以外をブックマークしてしまった際、エラーを防げます。

getURL.py
urls = filter(lambda url:url is not None, list(map(get_weblio_url,bookmarks)) )

さっき定義した関数を使ってweblioのurlのみ取得します

参考

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?