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초에 한번씩 스크롤 내림
# 스크롤 가장 아래로 내림
broswer.execute_script("window.scrollTo(0, document.body.scrollHeight)")
# 반복 수행
while True:
# 현재 문서 높이를 가져와서 저장
prev_height = broswer.execute_script("return document.body.scrollHeight")
# 페이지 로딩 대기
time.sleep(interval)
broswer.find_element_by_class_name("ico_arrow").click()
broswer.execute_script("window.scrollTo(0, document.body.scrollHeight)")
# 현재 문서 높이를 가져와서 저장
curr_height = broswer.execute_script("return document.body.scrollHeight")
if curr_height == prev_height:
break
curr_height = prev_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()
'내마음대로만들어보자 > 크롤링' 카테고리의 다른 글
특정 시간동안 계속해서 scroll down 하기 (0) | 2021.06.11 |
---|---|
Selenium / BeautifulSoup- 구글무비 (무한스크롤, 특정값 가져오기) (0) | 2021.06.09 |
Selenium 무한 스크롤 (0) | 2021.06.08 |
selenium 활용 - 네이버 항공권 (0) | 2021.06.08 |