【Webスクレイピング】Pythonでサイト内のリンク先にある画像を一括取得する方法

Python

 本記事では、Pythonでサイト内のリンク先にある画像を一括取得する方法を紹介する。

環境は下記を想定。
OS:Windows10(64bit版)
Pythonインストール環境:Anaconda3
Pythonバージョン:3.7
エディタ:Jupyter Notebook

本記事は現在ソースコードのみ掲載しており、解説部分は未完成である。
解説部分の記載が完了したらこの注意書きは削除する。

広告
広告

実装例

 下記、プログラムの実装例を示す。
 (未インストールのライブラリがある場合は予めインストールしておくこと。)

from bs4 import BeautifulSoup
import requests
import pandas as pd
import time
import os

url = 'https://pictblog.com/' 
response = requests.get(url)
time.sleep(3)

soup = BeautifulSoup(response.text, 'html.parser')
contents = soup.find(class_="list ect-vertical-card-2 ect-vertical-card ect-2-columns ecb-entry-border front-page-type-index")
get_a = contents.find_all('a')

title_texts = []
title_links = []
for i in range(len(get_a)):
    if get_a[i].get("title") != None :
        try:
            text_ = get_a[i].get("title")
            link_ = get_a[i].get("href")
            title_texts.append(text_)
            title_links.append(link_)
        except:
            pass

image_titles = []
image_lists = []

for j in range(len(title_links)):
    title_link = title_links[j]
    #print(title_link)
    
    r = requests.get(title_links[j])
    soup = BeautifulSoup(r.text, 'html.parser')
    
    image_title = soup.find(class_="entry-title").text
    image_titles.append(image_title)
    
    get_contents = soup.find(class_="entry-content cf")
    get_list_image = get_contents.find_all('img')
    
    for k in range(len(get_list_image)):
        if get_list_image[k].get("src") != None and  'https://pictblog.com/wp-content/uploads/' in get_list_image[k].get("src"):
            try:
                get_image_link = get_list_image[k].get("src")
                image_lists.append(get_image_link)
            except:
                pass
    
os.mkdir('./images')

for image_data in image_lists:
    r = requests.get(image_data)
    time.sleep(3)
    img_file = open('./images/' + image_data.split('/')[-1], mode='wb')
    img_file.write(r.content)
    img_file.close

 上記プログラムを実行すると、本ブログのトップページに掲載されているリンクのURLを取得し、さらにリンク先の本文中の画像URLを一括取得、画像保存用フォルダを作成した上で画像を保存することができる。
 (画像は、プログラムが保存されているフォルダ内の「image」フォルダに保存される。)

 

 END

広告

コメント

タイトルとURLをコピーしました