AI

웹 크롤링 2

0_hailey_0 2024. 3. 9. 21:21

Gmarket 실습!

  • 베스트 상품 200개 데이터 수집
  • 상품의 이미지 200개 다운로드

1. URL 찾기

import pandas as pd
import requests
from bs4 import BeautifulSoup
url ='https://www.gmarket.co.kr/n/best'

 

2. request > response : str(html)

response = requests.get(url)
response

 

3. bs > DataFrame

dom = BeautifulSoup(response.text, 'html.parser')

# select 200 items
elements = dom.select("#gBestWrap > div.best-list > ul > li")
len(elements)
element = elements[0]

# select item data
data = {
    "title": element.select_one(".itemname").text,
    "link": element.select_one(".itemname").get("href"),
    "img": 'https:'+ element.select_one("img.image__lazy").get("src"),
    "o_price": element.select_one(".o-price").text,
    "s_price": element.select_one(".s-price").text.strip().split("\n")[0],
}
data

 

 

 

items = []
for element in elements :
    data = {
    "title": element.select_one(".itemname").text,
    "link": element.select_one(".itemname").get("href"),
    "img": 'https:'+ element.select_one("img.image__lazy").get("src"),
    "o_price": element.select_one(".o-price").text,
    "s_price": element.select_one(".s-price").text.strip().split("\n")[0],
    }
    items.append(data)
    
df = pd.DataFrame(items)
df.tail(2)

df.to_excel('g_items.xlsx', index = False, engine='openpyxl')

 

 

4. download image

# dir 생성
import os
os.makedirs('data')

# 파일 리스트 출력
os.listdir('data')
img_link = df.loc[0, 'img']
img_link

response = requests.get(img_link)
response
with open('data/test.png', 'wb') as file:
    file.write(response.content)
   
# 파일 리스트 출력
os.listdir('data')
from PIL import Image as pil

pil.open("data/test.png")
# 5개의 아이템 이미지 다운로드
for idx, data in df[:5].iterrows():
    print(idx, data['img'])
    response = requests.get(data['img'])
    filename = f"data/{idx}.png"
    with open(filename, "wb") as file:
        file.write(response.content)
os.listdir('data')
pil.open("data/4.png")
# 디렉토리 삭제
import shutil
shutil.rmtree('data')

 

 

 

[3주차 02]