スクレイピング:画像ファイルを読み込んで保存する
ファイル保存の基本的な考え方は次の通りだと思う。
1.保存先ファイルをフルパスで定義する
2.そのファイルに保存するデータを指定する
3.ファイル作成(保存)
【書式】
imgdata=requests.get(画像URL)
with open(ファイル名,mode="wb") as f:
f.write(imgdata.content)
【コード】
import requests
# 画像ファイルを取得する
imgdata=requests.get(image_url)
# URLから最後のファイル名を取り出す
filename=image_url.split("/")[-1]
# 画像データをファイルに書き出す
with open(filename,mode="wb") as f:
f.write(imgdata.content)
【結果】
【書式】
【コード】
import requests
# 画像ファイルを取得する
imgdata=requests.get(image_url)
# URLから最後のファイル名を取り出す
filename=image_url.split("/")[-1]
filepath="/content/drive/MyDrive/Python_2024/001/" +filename
# 画像データをファイルに書き出す
with open(filepath,mode="wb") as f:
f.write(imgdata.content)
【結果】
【書式】
フォルダ作成
フォルダ=Path("フォルダ名")
フォルダ.mkdir(exist_ok=True)
【コード】
import requests
from pathlib import Path
# 保存用フォルダを作る
out_folder=Path("download")
out_folder.mkdir(exist_ok=True)
# 画像ファイルを取得する
imgdata=requests.get(image_url)
# URLから最後のファイル名を取り出す
filename=image_url.split("/")[-1]
# 保存ファイルのフルパスを作成する
out_path=out_folder.joinpath(filename)
# 画像データをファイルに書き出す
with open(out_path, mode="wb") as f:
f.write(imgdata.content)
【結果】
【書式】
【コード】
import requests
from bs4 import BeautifulSoup
import urllib
# webページを取得して解析する
response=requests.get(load_url)
soup=BeautifulSoup(response.content,"html.parser").find(class_="entry-content hatenablog-entry")
# 全てのimgタグを検索し、リンクを取得する
for element in soup.find_all("img"):
src=element.get("src")
# 絶対URLと、ファイルを表示する
print("タグ:",element)
print("タグのテキスト:",element.text)
image_url=urllib.parse.urljoin(load_url,src)
filename=image_url.split("/")[-1]
print("URL:",image_url)
print("ファイル名:",filename)
print("\n")
【結果】
タグ: <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hwk159/20200614/20200614142330.jpg"/>
タグのテキスト:
ファイル名: 20200614142330.jpg
タグ: <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hwk159/20200614/20200614142318.jpg"/>
タグのテキスト:
ファイル名: 20200614142318.jpg
タグ: <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hwk159/20200614/20200614142307.jpg"/>
タグのテキスト:
ファイル名: 20200614142307.jpg
【書式】
1秒待つ
import time
time.sleep(1)
【コード】
import requests
from bs4 import BeautifulSoup
from pathlib import Path
import urllib
import time
# webページを取得して解析する
response=requests.get(load_url)
soup=BeautifulSoup(response.content,"html.parser").find(class_="entry-content hatenablog-entry")
# 保存用フォルダを作成する
out_folder=Path("/content/drive/MyDrive/Python_2024/001/download")
out_folder.mkdir(exist_ok=True)
# 全てのimgタグを検索し、リンクを取得する
for element in soup.find_all("img"):
src=element.get("src")
# 絶対URLを作って、画像データを取得する。
image_url=urllib.parse.urljoin(load_url,src)
imgdata=requests.get(image_url)
# URLからファイル名を取り出して、保存フォルダ名とつなげる
filename=image_url.split("/")[-1]
out_path=out_folder.joinpath(filename)
# 画像データを、ファイルに書き出す。
with open(out_path,mode="wb") as f:
f.write(imgdata.content)
# 1回アクセスしたので1秒待つ
time.sleep(1)