728x90
먼저 Gmarket에서 인기순위 1위인 상품의 상품명, 가격, 카테고리 정보를 가져와 보자.
from selenium import webdriver as wb
import pandas as pd
import time
driver = wb.Chrome()
url = "http://corners.gmarket.co.kr/Bestsellers"
driver.get(url)
# 단수, 복수 잘보자!
# elements 복수는 list로 가져와짐
# no1인 상품 클릭!
div = driver.find_element_by_css_selector("p#no1 + div")
div.click()
itemTitle = driver.find_element_by_css_selector("h1.itemtit")
itemPrice = driver.find_element_by_css_selector("strong.price_real")
itemCategory = driver.find_element_by_css_selector("div.location-navi > ul > li:last-child > a")
print(f"상품명 : {itemTitle.text}, \n가격: {itemPrice.text}, \n카테고리: {itemCategory.text}")
뒤로가기
# 뒤로가기
driver.back()
1위인 상품의 정보를 가져와봤으니 이런식으로 반목문을 이용하여 100위까지의 정보를 가져와보자.
자료가 많아서 일단 1~4까지만 반복하였다.
100개 전부 가져오려면 반복문을 1, 101로 고치면 된다.
from selenium import webdriver as wb
import pandas as pd
import time
driver = wb.Chrome()
url = "http://corners.gmarket.co.kr/Bestsellers"
driver.get(url)
time.sleep(1)
titleList = []
priceList = []
cateList = []
for i in range(1,4):
div = driver.find_element_by_css_selector("p#no" +str(i)+"+div")
div.click()
time.sleep(1)
itemTitle = driver.find_element_by_css_selector("h1.itemtit").text
itemPrice = driver.find_element_by_css_selector("strong.price_real").text
itemCategory = driver.find_element_by_css_selector("div.location-navi > ul > li:last-child > a").text
titleList.append(itemTitle)
priceList.append(itemPrice)
cateList.append(itemCategory)
time.sleep(1)
driver.back()
time.sleep(1)
dic = {"상품명" : titleList, "가격": priceList , "카테고리" : cateList}
pd.DataFrame(dic)
창없는 크롬으로 크롤링 headless 사용
from selenium import webdriver as wb
import pandas as pd
import time
options = wb.ChromeOptions()
# headless는 브라우저 창을 실제로 운영체제의 ‘창’으로 띄우지 않고
# 대신 화면을 그려주는 작업(렌더링)을 가상으로 진행해주는 방법으로
# 실제 브라우저와 동일하게 동작하지만 창은 뜨지 않는 방식으로 동작할 수 있다.
options.add_argument('headless')
# 크롬 창의 크기 옵션
options.add_argument('window-size=1920x1080')
# gpu(그래픽카드 가속)를 사용하지 않는 옵션
options.add_argument("disable-gpu")
# 혹은 options.add_argument("--disable-gpu")
# 만약 위 코드를 실행했을때 GPU에러~가 난다면
# --disable-gpu로 앞에 dash(-)를 두개 더 붙여봐라.
# 이 버그는 크롬 자체에 있는 문제점이다.
# chrome_options는 Chrome을 이용할때만 사용하는 인자이다.
# 이 인자값을 통해 headless등의 추가적인 인자를 넘겨준다.
driver = wb.Chrome("C:/Users/SM2119/크롤링/chromedriver.exe", chrome_options=options)
driver.get("http://corners.gmarket.co.kr/Bestsellers")
time.sleep(1)
title_list = []
price_list = []
cate_list = []
for i in range(1,10) :
div = driver.find_element_by_css_selector("p#no"+str(i)+ "+div")
div.click()
time.sleep(1)
title = driver.find_element_by_css_selector("h1.itemtit").text
price = driver.find_element_by_css_selector("strong.price_real").text
cate = driver.find_element_by_css_selector("div.location-navi > ul > li:last-child > a").text
title_list.append(title)
price_list.append(price)
cate_list.append(cate)
time.sleep(1)
driver.back()
time.sleep(1)
dic = {"상품명" : title_list, "가격": price_list, "카테고리" : cate_list}
pd.DataFrame(dic)
driver.quit()
pd.DataFrame(dic)
728x90
'파이썬 > 웹 크롤링' 카테고리의 다른 글
[웹 크롤링] 페이지 다운과 이미지 크롤링 (0) | 2021.06.04 |
---|---|
[웹크롤링] Selenium 모듈과 tqdm라이브러리 (0) | 2021.06.04 |
[웹 크롤링]Requests 와 BeautifulSoup 라이브러리로 페이지 정보 가져오기 [스마트인재개발원] (0) | 2021.06.01 |