정적 웹페이지 데이터를 수집하려면 BeautifulSoup을 이용하여 HTML 문자열 데이터를 Parsing 해야 한다.import requests
from bs4 import BeautifulSoup

query = '삼성전자
url = 'https://search.naver.com/search.naver?query={query}'
response = requests.get(url)
# BeautifulSoup 객체 만들어줌
dom = BeautifulSoup(response.text, 'html.parser')
elements = dom.select('.lst_related_srch > .item')
element = elements[0]
element.text.strip() # 공백제거
keywords = [element.text.strip() for element in elements]
keywords
>
['삼성전자주가',
'삼성전자주식',
'삼성전자 배당금',
'오늘 삼성전자 주가',
'삼성전자서비스',
'삼성전자서비스센타',
'삼성전자주가지수',
'삼성전자주식가격',
'삼성 전자레인지',
'삼성전자 패밀리몰']
# 필요 라이브러리
import pandas as pd
import requests
from bs4 import BeautifulSoup

url = 'https://www.gmarket.co.kr/n/ qpbest'
response = requests.get(url)
# response를 BeautifulSoup으로 변환하고 dom에 저장
dom = BeautifulSoup(response.text, 'html.parser')
# CSS-selector 사용 select 200 items
elements = dom.select('#gBestWrap > div.best-list > ul > li')
# 15번째 상품 선택하여 원하는 정보 탐색
element = elements[14]
# items에 원하는 정보 넣기
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'),
's-price' : element.select_one('.s-price').text.split(' ')[0][3:-1].replace(',', '')
}
items.append(data)
# 데이터 확인
df = pd.DataFrame(items)
df.tail(2)

# 디렉토리 생성
import os
os.makedirs('data') # 다시 생성하면 에러남
# 파일 리스트 출력
os.listdir('data')
# `15번째 이미지 가져옴
img_link = df.loc[14, 'img']
img_link
# requests 요청 및 status 확인
response = requests.get(img_link)
response
# 파이썬 입출력 문법
with open('data/test.png', 'wb') as file:
file.write(response.content)
# 이미지 저장 확인
os.listdir('data')
# pillow 패키지: 이미지 전처리
from PIL import Image as pil
pil.open('data/test.png')

selenium 방법으로 시도할 수 있다.# 필요 라이브러리
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
# 실행 시 브라우저 실행됨
driver = webdriver.Chrome()
# 페이지 이동
driver.get("https://daum.net")
# 브라우져 사이즈 조절
driver.set_window_size(200, 600)
# alert 다루기
driver.execute_script("alert('hello selenium!!!');")
# 확인버튼 클릭
alert = driver.switch_to.alert
alert.accept()
# 팝업 닫기 버튼 클릭
driver.find_element(By.CSS_SELECTOR, '.link_close').click()
# 브라우져 스크롤 조절
driver.execute_script("window.scrollTo(200, 300);")
# 브라우져 스크롤 조절
driver.execute_script("window.scrollTo(0, 0);")
# 브라우져 사이즈 조절
driver.set_window_size(800, 800)
# 문자열 입력
driver.find_element(By.CSS_SELECTOR, "#q").send_keys("파이썬")
# 문자열 입력
driver.find_element(By.CSS_SELECTOR, "#q").clear()
# 검색 버튼 클릭
driver.find_element(By.CSS_SELECTOR, '.btn_ksearch').click()
# 브라우져 종료
driver.quit()
selenium 부분 듣다가 오늘 갑자기 고정키 이슈로 멘탈 터졌음
주피터랩에서 실행시킨다고 Shift+Enter 누르다가 shift만 여러번 눌러버린....
갑자기 키보드 안됌ㅋㅋㅋㅋㅋㅋ 오늘 체크아웃도 해야하고 셀프테스트도 쳐야하고 강의평가도 진행해야 하는데ㅋㅋㅋㅋ (마우스로 모든걸 해결가능 했다는 점 뿌듯ㅎㅎ)
고치려고 이래저래 하다가 포기했죠ㅋㅋㅋ 근데 지금은 어떻게 쓰냐고요? 수업 끝나고 구글링으로 어째저째 고쳤슴다
아무튼 웹크롤링을 배우면서 들었던 생각이 타교육을 수강하려고 받은 강의자료에서 배운 것과는 확실히 다르다고 생각이 들었어요!
웹크롤링 연습하고 나도 돈 버는 그 날 까지~~!!🌈💪🎉