selenium
naver news 제목과 댓글 수 가져오기
import requests
from bs4 import BeautifulSoup
# naver news
url ='https://n.news.naver.com/mnews/article/056/0011485138?sid=105'
resp = requests.get(url)
# error : request header 값 중 user-agent 값 추가
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
resp = requests.get(url, headers=headers)
if resp.status_code == 200:
soup = BeautifulSoup(resp.text)
# title 제목
title_area = soup.find('h2',{'id':'title_area'})
title_area.span.string
# 댓글 수 : 정상적으로 가져 오지 못함
soup.find('a',{'id':'comment_count'}).string # 댓글
- 크롬 개발자 도구 > Network > Fetch/XHR 에도 파일이 없음
- selenium, nodejs 등 필요
selenium 설치
# cmd
> conda activate 가상환경
> conda install selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
print(webdriver.__version__)
chromedriver 설치
# 웹 드라이버 로드
driver = webdriver.Chrome('../chromedriver')
driver.implicitly_wait(3) # 묵시적 대기
# 웹 페이지 로드
driver.get('https://www.naver.com')
# 검색어 입력
search = driver.find_element_by_css_selector('#query')
search.send_keys('삽살개')
# 검색 버튼 클릭
search.send_keys(Keys.ENTER)
time.sleep(2)
# 요소 찾기 - 지식백과에서 삽살개 클릭
posts = driver.find_elements_by_css_selector('a.area_text_title')
posts[0].click()
time.sleep(2)
NAVER News 댓글수 가져오기
# 웹 드라이버 로드
driver = webdriver.Chrome('../chromedriver')
driver.implicitly_wait(3)
# 웹 페이지 로드
driver.get("https://n.news.naver.com/mnews/hotissue/article/437/0000342169?type=series&cid=2000139")
# 로딩 대기
time.sleep(3)
#driver.implicitly_wait(3)
# 댓글 수 가져오기
comment_count = driver.find_element_by_css_selector("span.u_cbox_count").text
print(comment_count)
DAUM News 댓글수 가져오기
# 웹 드라이버 로드
driver = webdriver.Chrome('../chromedriver')
driver.implicitly_wait(3)
# 웹 페이지 로드
driver.get("https://v.daum.net/v/20230515141106653")
# 로딩 대기
time.sleep(3)
# 댓글 수 가져오기
comment_count = driver.find_element_by_css_selector("em.num_count").text
print(comment_count)
#driver.close()
텍스트, 하이퍼링크, 이미지 가져오기
#step1.selenium 패키지와 time 모듈 import
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
#step2.검색할 키워드 입력
query = input('검색할 키워드를 입력하세요: ')
#step3.크롬드라이버로 원하는 url로 접속
url = 'https://www.naver.com/'
driver = webdriver.Chrome('../chromedriver')
driver.get(url)
time.sleep(3)
#step4.검색창에 키워드 입력 후 엔터
search_box = driver.find_element_by_css_selector("input#query")
search_box.send_keys(query)
search_box.send_keys(Keys.RETURN)
time.sleep(2)
#step5.뉴스 탭 클릭
driver.find_element_by_xpath('//*[@id="lnb"]/div[1]/div/ul/li[2]/a').click()
time.sleep(2)
#step6.뉴스 제목 텍스트 추출
news_titles = driver.find_elements_by_css_selector(".news_tit")
for i in news_titles:
title = i.text
print(title)
#step7.뉴스 하이퍼링크 추출
for i in news_titles:
href = i.get_attribute('href')
print(href)
#step8.뉴스 썸네일 이미지 추출
news_thumbnail = driver.find_elements_by_css_selector("img.thumb.api_get")
link_thumbnail = []
for img in news_thumbnail:
link_thumbnail.append(img.get_attribute('src'))
# 이미지 저장할 폴더 생성
import os
# path_folder의 경로는 각자 저장할 폴더의 경로를 적어줄 것(ex.img_download)
path_folder = './newsimg/'
if not os.path.isdir(path_folder):
os.mkdir(path_folder)
# 이미지 다운로드
from urllib.request import urlretrieve
i = 0
for link in link_thumbnail:
i += 1
urlretrieve(link, path_folder + f'{i}.jpg')