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 # 댓글 

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')