とりあえずコード
get-html.py
import requests
from bs4 import BeautifulSoup
import urllib.request
response = requests.get('https://www.google.com/search?q=japanese&rlz=1C5CHFA_enJP834JP834&sxsrf=ALeKk02zyBpLsv9QCQOhAyZnOylqFDzv8Q:1606105228848&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjaooyd6JftAhWB62EKHUMRCTEQ_AUoAXoECBEQAw&biw=1084&bih=634')
#response = requests.get('http://google.co.jp')
# print(response.text)
soup = BeautifulSoup(response.text, 'lxml')
titles = soup.find_all("img", limit=10)
ind = 0
for title in titles:
url = title.get("src")
if "https://" in url:
save_name = "/Users/aspara/Desktop/pg/mask_face/japanese/face"+str(ind)+".jpg"
tgt = urllib.request.urlopen(url).read()
with open(save_name, mode='wb') as f:
f.write(tgt)
ind += 1
googleでjapaneseと検索して出てくる画像を上から10枚取ってきて保存する。
証明書が古いことにより出たエラー
実行する際に、以下のようなエラーが出た。
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
どうやら、通信の際に証明書なるものが必要で、サーバー側とクライアント側(自分側)で必要なようだが、自分側の証明書がだめらしい。というわけで調べてみると、このような記事が出てきたので同様に自分のpython3.9のフォルダからinstall Certificates.commandというファイルを見つけ、そこに記載の通り、
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -m pip install --upgrade pip
というコマンドを実行すると、
Collecting pip
Downloading pip-20.2.4-py2.py3-none-any.whl (1.5 MB)
|████████████████████████████████| 1.5 MB 2.9 MB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.2.3
Uninstalling pip-20.2.3:
Successfully uninstalled pip-20.2.3
Successfully installed pip-20.2.4
の通り、証明書が最新のものにアップデートされた。
これで再度実行すると解決した。