こんにちは。
今週は「アルフレッド・アドラー 人生に革命が起きる100の言葉」を読みました。その中で突き刺さった言葉があったので、自分のブログだし(笑)残しておこうと思います。
「やる気がなくなった」のではない。 「やる気をなくす」という決断を自分でしただけだ。 「変われない」のではない。 「変わらない」という決断を自分でしているだけだ。
引用:アルフレッド・アドラー 人生に革命が起きる100の言葉 著:小倉 広
とても晴れやかなスッキリした気分になりました。すごく読みやすいので大変お勧めです。
さて、余談が長くなりましたが、今週はコンピュータビジョン理論の勉強が出来なくて、軽めのスクレイピングのプログラムをご紹介しようと思います。今やデータ集めに欠かせない重要なものですが、これ自体はあまり知識が増えた感じがしないので、あまり好きではないんですけど、でもうまくいった時は、プログラミングしていて良かったな、と思える、なんだか不思議な。(やっぱり今日変だな・・・)
ログインが必要なWebサイトのスクレイピング概要
Seleniumというブラウザを自動で操作することがツールを利用してログインした後に欲しい画像のURLからダウンロードします。また、Seleniumは市場で主要なブラウザの全てをWebDriverを使うことでサポートしています。WebDriverとはAPI群とプロトコルです。
私はChromeユーザですので、以下から取得します。最近Chromeのバージョンが上がって、それに合わせてWebDriverも更新する必要がありました。 https://chromedriver.chromium.org/downloads
FireFox等別のブラウザをお使いの方は、以下サイトが参考になると思います。 https://www.selenium.dev/documentation/ja/getting_started_with_webdriver/browsers/
ソースコード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| from selenium import webdriver
import time
# ブラウザを表示しないで起動
options = webdriver.ChromeOptions()
options.set_headless(True)
options.add_experimental_option("prefs", {
"download.default_directory": r"C:\Users\mami\XXXXX\XXXXX",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})
driver = webdriver.Chrome(executable_path="C:\XXXXX\chromedriver.exe", chrome_options=options)
# ログイン用URL
driver.get('https://XXXXX')
time.sleep(1)
# ログイン(サイトによって変わる)
driver.find_element_by_name('login').send_keys('XXXXX')
driver.find_element_by_name('password').send_keys('XXXXX')
driver.find_element_by_name('loginbtn').click()
time.sleep(5)
# 画像取得
imgurl = "https://XXXXX.jpg"
driver.get(imgurl)
filename = "data.jpg"
# ダウンロード実行用スクリプトを生成&実行
script_str = """
window.URL = window.URL || window.webkitURL;
var xhr = new XMLHttpRequest(),
a = document.createElement('a'), file;
xhr.open('GET', '""" + imgurl + """', true);
xhr.responseType = 'blob';
xhr.onload = function () {
file = new Blob([xhr.response], { type : 'application/octet-stream' });
a.href = window.URL.createObjectURL(file);
a.download = '""" + filename + """';
a.click();
};
xhr.send();
"""
driver.execute_script(script_str)
time.sleep(1)
|