import pandas as pd
import requests
from bs4 import BeautifulSoup
url = "http://corners.gmarket.co.kr/Bestsellers"
response = requests.get(url)
print(response)
dom = BeautifulSoup(response.text, "html.parser") # html 파싱
# select items
elements = dom.select("#gBestWrap > div > div:nth-child(5) > div > ul > li")
print(len(elements), "\n") # 태그와 클래스로 아이템 찾기
element = elements[0] # 첫번째만 확인
# select item data
data = {
"title": element.select_one(".itemname").text,
"link": element.select_one(".itemname").get("href"),
"img": element.select_one("img").get("data-original"),
"o_price": element.select_one(".o-price").text,
"s_price": element.select_one(".s-price").text.strip().split("\n")[0],
}
print(data, "\n")
# make DataFrame
datas = []
for element in elements:
datas.append({
"title": element.select_one(".itemname").text,
"link": element.select_one(".itemname").get("href"),
"img": "http:" + element.select_one("img.lazy").get("data-original"),
"o_price": element.select_one(".o-price").text,
"s_price": element.select_one(".s-price").text.strip().split("\n")[0],
})
df = pd.DataFrame(datas)
display(df.head())
# make directory
import os
if not os.path.exists("datas"):
os.makedirs("datas")
%ls
img_link = df.loc[0, "img"]
print(img_link)
response = requests.get(img_link)
print(response)
이미지 파일 열기
test.png는 코드 확인용으로 넣어둔 이미지 파일이다. G마켓 이미지는 경로를 직접 보고 입력하거나 glob을 사용하면 된다.
# import glob from glob
# path = glob("datas/*.png")
# for i in path:
# with open(i, "wb") as file:
# file.write(response.content)
with open("datas/test.png", "wb") as file:
file.write(response.content)
%ls datas
from PIL import Image as pil
pil.open("datas/test.png")
# 5개의 아이템 이미지 다운로드
for idx, data in df[:5].iterrows():
filename = "0" * (3 - len(str(idx))) + str(idx)
print(idx, end=" ")
response = requests.get(data.img)
with open(f"datas/{filename}.png", "wb") as file:
file.write(response.content)
%ls datas
pil.open("datas/002.png")