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]