아직은 화면에 보여지는 부분에 신경쓰기보다는 전반적으로 웹이 어떻게 동작하는지에 초점을 맞춰서
공부할겸 진행을 해보려고한다!
우선 내가 원하는 정보를 화면에서 보여주기 위해서는
인터넷상에서 제공이 되는 레시피정보를 크롤링 해오려고한다.
from selenium import webdriver
broswer = webdriver.Chrome("./chromedriver 2")
broswer.maximize_window()
# 페이지 이동
url = "https://m.post.naver.com/my.nhn?memberNo=11566067"
broswer.get(url)
# 지정한 위치로 스크롤 내리기
# 해상도의 높이인 900으로 스크롤 내리기
# broswer.execute_script("window.scrollTo(0, 900)")
# 해상도의 높이인 1900으로 스크롤 내리기
# broswer.execute_script("window.scrollTo(0, 1900)")
# 화면 가장 아래로 스크롤 내리기
# broswer.execute_script("window.scrollTo(0, document.body.scrollHeight)")
import time
interval = 2 # 2초에 한번씩 스크롤 내림
# 현재 문서 높이를 가져와서 저장
prev_height = broswer.execute_script("return document.body.scrollHeight")
# 반복 수행
while True:
# 스크롤 가장 아래로 내림
broswer.execute_script("window.scrollTo(0, document.body.scrollHeight)")
# 페이지 로딩 대기
time.sleep(interval)
# 현재 문서 높이를 가져와서 저장
curr_height = broswer.execute_script("return document.body.scrollHeight")
if curr_height == prev_height:
break
prev_height = curr_height
print("스크롤 완")
import requests
from bs4 import BeautifulSoup
soup = BeautifulSoup(broswer.page_source, "lxml")
# movies = soup.find_all("div", attrs={"class": ["ImZGtf mpg5gc", "Vpfmgd"]}) 리스트형태로 감싸게되면은 클래스명이 첫번째, 두번째인거 둘다 가져오게된다.
foods = soup.find_all("div", attrs={"class": "inner_feed_box"})
print(len(foods))
for food in foods:
title = food.find("strong", attrs={"class": "tit_feed ell"}).get_text()
desc = food.find("p", attrs={"class": "text_feed ell"}).get_text()
img = food.find("img", attrs={"alt": "본문 사진"})["src"]
link = food.find("a", attrs={"class": "link_end"})["href"]
print(f"제목 : {title}")
print(f"설 : {desc}")
print(f"이미지 : {img}")
print("링크 : ", "https://m.post.naver.com/" + link)
print("_" * 100)
broswer.quit()
우선은 한 페이지에 보여지는 정보들을 스크래핑 해오는데는 성공했다...!!!!
역시나 아직은 개발문서를 보는건 어려운일인것같다ㅠㅠㅠㅠ 이것도 자꾸보다보면은 익숙해지겠지?ㅋㅋㅋ
이제 여기코드에 내가원하는 만큼 정보를 스크래핑해오게하기위해
더보기를 클릭하고 스크롤을 내리는 반복작업을 할 수 있도록 코드를 추가할 예정이다.
다만, 걱정되는부분은 블로그에 레시피정보가 4천개 이상 되기때문에
다소 오래걸리진않을까 걱정이되어 한번 해보고 조금 과부하가 걸린다면 특정시간만큼만 스크롤 할수있도록 설정해볼 생각이다!!
우선은 스크래핑을 정상적으로 해온다면
이정보를 mongoDB에 저장하는것까지 완성해볼 생각이다!
'내마음대로만들어보자 > 나만의 웹 서비스 만들기' 카테고리의 다른 글
[화면그리기]나만의 Planner 만들기 (0) | 2021.09.26 |
---|---|
[계획]나만의 Planner 만들기 (0) | 2021.09.26 |
나만의 웹 서비스만들기 배포하기(AWS) (0) | 2021.06.06 |
개발일지#2 - 나만의 웹서비스 만들기2 (개발계획) (0) | 2021.06.03 |
개발일지 #1 - 나만의웹서비스만들기2 (아이디어 구상) (0) | 2021.06.02 |