728x90
파이썬을 배우는 중인데 헤드라인 뉴스 가져오기를 시도했는데 실패했다.
실패한 기록도 저장하고, 나중에 더 배우면 그때 해결해보련다. ==> 크롤링 다른 라이브러리를 이용하여 해결
#파이썬 크롤링 기초
# pip install lxml 을 윈도우 cmd 창에서 실행한다.
# pip install --upgrade pip
# pip list
# pip install requests
# pip install cssselect
# pip install bs4 (BeautifulSoup 4)
import requests
import lxml.html
def main():
"""
네이버 메인 뉴스 스탠드 스크랩핑 메인 함수
"""
# 세션 사용
session = requests.Session()
# 스크랩핑 대상 URL (GET, POST)
response = session.get("https://news.naver.com/")
# 신문사 링크 리스트 획득
urls = scrape_news_list_page(response)
# 딕셔너리 확인
#print(urls)
# 결과 출력
for url in urls:
# url 출력
print(url)
# 파일 쓰기
# 생략
def scrape_news_list_page(response):
# url 리스트 선언
urls = {}
# 태그 정보 문자열 저장
print(response.content)
root = lxml.html.fromstring(response.content)
#print(root)
# for a in root.cssselect('#today_main_news > div.hdline_news > ul > li > div > a'):
for a in root.xpath('//div[@class="hdline_news"]/ul[@class="hdline_article_list"]/li/div[@class="hdline_article_tit"]/a[@class="lnk_hdline_article"]'):
# 링크
url = a.get('href')
urls.append(url)
return urls
# 스크랩핑 시작
if __name__ == "__main__":
main()
|
위 방법으로 해결이 안되어서 selenium 으로 실시간 뉴스 가져오는 걸 해결했다.
Update : 2021.6.28(월)
# 네이버 실시간 뉴스 정보 가져오기
# BeautifulSoup은 HTML 과 XML 파일로부터 데이터를 수집하는 라이브러리
# pip install selenium
# pip install chromedriver-autoinstaller
# pip install bs4
from selenium import webdriver
import chromedriver_autoinstaller
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
options = Options()
# options.add_experimental_option('excludeSwitches', ['enable-logging'])
options.add_argument('headless'); # headless는 화면이나 페이지 이동을 표시하지 않고 동작하는 모드
# webdirver 설정(Chrome, Firefox 등)
chromedriver_autoinstaller.install()
driver = webdriver.Chrome(options=options) # 브라우저 창 안보이기
# driver = webdriver.Chrome() # 브라우저 창 보이기
# 크롬 브라우저 내부 대기 (암묵적 대기)
driver.implicitly_wait(5)
# 브라우저 사이즈
driver.set_window_size(1920,1280)
# 페이지 이동(열고 싶은 URL)
baseURL = 'https://news.naver.com/'
driver.get(baseURL)
soup = BeautifulSoup(driver.page_source, 'html.parser')
headline_new_list = soup.select('ul.hdline_article_list > li')
print('-' * 55, end=' ')
print('네이버 실시간 뉴스',end=' ')
print('-' * 55)
for v in headline_new_list:
# print(v)
title = v.select_one('div.hdline_article_tit > a').text.strip()
news_url = v.select_one('div.hdline_article_tit > a').get('href')
news_url = '{}{}'.format(baseURL,news_url)
print(title, ', ', news_url)
print('-' * 130)
|
728x90
'Web 크롤링 > Python Crawling' 카테고리의 다른 글
[크롤링기초] 행정안전부 RSS 정보 크롤링 예제 (0) | 2021.06.22 |
---|---|
[크롤링기초] 사이트 정보 확인 (0) | 2021.06.22 |
[크롤링 기초] lxml 활용한 네이버 지식인 정보 가져오기 (0) | 2021.06.22 |
[크롤링기초] beautifulSoup 사용 예제 (0) | 2021.06.21 |
[파이썬] 크롤링 기초 예제 네이버 이미지 다운로드 (0) | 2021.06.17 |