상품 비교를 위한 웹 스크롤링.
네이버 상품 비교를 하는데 있어서 좀 더 나에게 맞게 필터링을 하기 위해서 파이썬으로 상품 비교를 만드는 크롤링을 하기로 했다.
그러기 위해서 우선 공부한 부분이
정규식
import re
요청
from requests
뷰티불수프
from bs4 import BeautifulSoup
셀레니움
from selenium import webdriver
from selenium.webdriver.common.by import By
구글 드라이버
헤드레스
등등 너무 알아야 하는게 많았다.
어찌되었든 시작을 했으니까 끝을 내야지
그래도 현재 네이버 쪽에서 가격 비교를 하는거는 비슷하게 했는데 아직도 해야 하는게 많다.
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import time
import csv
options = webdriver.ChromeOptions()
options.headless = True
options.add_argument("window-size=1920x1080")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36")
browser = webdriver.Chrome(options=options)
url = "https://search.shopping.naver.com/search/all?query=%ED%95%91%EA%B1%B0%EC%9A%94%EA%B1%B0%ED%8A%B8&bt=0&frm=NVSCPRO"
browser.get(url)
filename="가격비교.csv"
f = open(filename,"w",encoding="utf-8-sig", newline="")
writer = csv.writer(f)
extitle = "제목,가격,업체명,링크".split(",")
writer.writerow(extitle)
browser.execute_script("window.scrollTo(0,1080)")
interval = 2
prev_height = browser.execute_script("return document.body.scrollHeight")
# 반복 수행
while True:
# 스크롤을 가장 아래로 내림.
browser.execute_script("window.scrollTo(0, document.body.scrollHeight)")
# 페이지 로딩 대기
time.sleep(interval)
# 현재 문서 높이를 가져와서 저장.
curr_height = browser.execute_script("return document.body.scrollHeight")
if curr_height == prev_height:
break
prev_height = curr_height
soup = BeautifulSoup(browser.page_source,"lxml")
lists = soup.find_all("li", attrs={"class" : "basicList_item__2XT81"})
for list in lists :
title = list.find("div",attrs={"class" : "basicList_title__3P9Q7"}).get_text()
price = list.find("span",attrs={"class" : "price_num__2WUXn"}).get_text()
store = list.find("a",attrs={"class" : "basicList_mall__sbVax"})
if store :
store = store.get_text()
else :
continue
link = list.find("a", attrs={"class" : "basicList_link__1MaTN"})["href"]
data = (title + "/t" + price + "/t" + store + "/t" + link).split("/t")
writer.writerow(data)
print(title)
# print(title,",",price,",",store,",",link)
time.sleep(50)
코드를 입력하세요
Author And Source
이 문제에 관하여(상품 비교를 위한 웹 스크롤링.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@unpobby/상품-비교를-위한-웹-스크롤링저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)