Scrape gambar dan menyimpannya menggunakan python 3

Ditulis oleh Riedayme
- 4 Komentar
Tulisan kali ini akan membahas bagaimana cara scrape gambar dan menyimpannya menggunakan python 3, target yang saya ambil adalah situs wallhaven.cc dikarnakan gambarnya bagus bagus dan hd.

Install Library Python

  • pip install beautifulsoup4
  • pip install requests
  • pip install htmlmin
  • pip install json
  • pip install shutil

Buat file dengan ektensi .py dan isi kode python berikut :

import requests
import io
import htmlmin
import html
import shutil
import json
from bs4 import BeautifulSoup


def scraped_wallhaven(keyword):

 print("mencari gambar dengan keyword :"+ keyword)

 page_url = "https://wallhaven.cc/search?q=" + keyword

 #request url sitemap post
 req_pagination = requests.get(page_url)
 #define request to text
 req_pagination_text = req_pagination.text

 #define beautifulsoup
 soup_page = BeautifulSoup(req_pagination_text, "html.parser")

 select_pagination = soup_page.select("#thumbs > ul")

 if len(select_pagination) == 0:
  print('o owww, gambar tidak tersedia')
  run("masukan keywordnya kembali : ")

 for paged in select_pagination:
  page_json = paged['data-pagination']
  page_json_extract = json.loads(page_json)
  page = int(page_json_extract['total']) + 1
  print("ditemukan "+ str(page_json_extract['total']) +" halaman")
 #end for 

 for page_loop in range(1,page):
  print("memulai scrape halaman : "+ str(page_loop))
  page_loop_url = page_url + "&page=" + str(page_loop);

  #request url sitemap post
  req_post = requests.get(page_loop_url)
  #define request to text
  req_post_text = req_post.text

  #define beautifulsoup
  soup_post_url = BeautifulSoup(req_post_text, "html.parser")
  select_post_url = soup_post_url.select("a.preview")

  # get post url
  for tags in select_post_url:
   post_url = tags['href']

   #request url sitemap post
   req_post_detail = requests.get(post_url)
   #define request to text
   req_post_detail_text = req_post_detail.text

   #define beautifulsoup
   soup_post_detail = BeautifulSoup(req_post_detail_text, "html.parser")
   select_post_detail = soup_post_detail.select("#wallpaper")

   # get image url
   for imgs in select_post_detail:
    img_src = imgs['src']
    image_last_path = img_src.split("/")[5] 
    #create image
    request_images = requests.get(img_src, stream=True)
    with open(image_last_path, 'wb') as out_file:
     shutil.copyfileobj(request_images.raw, out_file)           
     del request_images

    #insert to text_result  
    print("berhasil scrape gambar dengan url : "+ post_url) 
   #end for
  #end for
 #end for 
 print("finish scraped !")
 exit() 

#end scraped_wallhaven()

def run(text):
 if text != '':
  keyword = input(text)
 else :
  keyword = input("masukan keyword : ")

 if keyword == '':
  print('o owww, keyword kosong')
  run()
 else :
  scraped_wallhaven(keyword)

run('')

Cara Pemakaian

  1. jalankan file python yang telah di isi kode diatas melalui cmd, pastikan sudah masuk ke direktory file python yang anda buat agar file ditemukan
  2. kemudian akan muncul tulisan masukan keyword, masukan keyword dalam bahasa inggris misal winter, fall , summer dan lainnya
  3. jika ditemukan akan menscrape kalau tidak akan kembali meminta masukan keyword
Jika kode tidak bekerja bisa jadi situs target melakukan update terhadap template yang dipakainya sehingga selector tidak berfungsi, untuk memperbaikinya dengan melakukan tindakan update selector

Referensi

Terbaru
Postingan Lebih Baru
Terlama
Postingan Lama

4 komentar

  1. Bondan Murdani Soleh
    Bondan Murdani Soleh 14 Oktober 2019 15.25

    Kalau untuk menyimpan file js atau style dan memanfaatkannya gmn ya

    Balasan
    1. Riedayme

      kurang tau saya kalau itu, kode diatas hanya untuk scraping saja

  2. drakor v

    apakah satu keyword berlanjut atau download ulang dari awal

  3. drakor one

    biar url yang sudah di scrape langsung di skip bisa ga min