일기
2차 팀프로젝트 뉴스 이슈관련
인생진리
2023. 4. 5. 17:28
#크롤링시 필요한 라이브러리 불러오기
from bs4 import BeautifulSoup
import requests
import re
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import urllib
#웹드라이버 설정
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
def makeUrl(search, page, page2):
search_urls = []
base_url = "https://search.naver.com/search.naver?where=news&query="
search = urllib.parse.quote(search)
for p in range(page, page2 + 1):
start = (p - 1) * 10 + 1
search_url = base_url + search + "&start=" + str(start)
search_urls.append(search_url)
return search_urls
#(부동산 건축물대장 사기피해,부동산 등기부등본 사기피해, 부동산 신분증 사기피해,부동산 위임장 사기피해, 후견등기사항 부존재증명서 피해)
#검색어 입력
search = input("검색할 키워드를 입력해주세요:")
#검색 시작할 페이지 입력
page = int(1)
#page = int(input("\n크롤링할 시작 페이지를 입력해주세요. ex)1(숫자만입력):"))
print("\n크롤링할 시작 페이지: ",page,"페이지")
#검색 종료할 페이지 입력
page2 = int(2)
#page2 = int(input("\n크롤링할 종료 페이지를 입력해주세요. ex)1(숫자만입력):"))
print("\n크롤링할 종료 페이지: ",page2,"페이지")
# naver url 생성
search_urls = makeUrl(search,page,page2)
## selenium으로 navernews만 뽑아오기##
# 버전에 상관 없이 os에 설치된 크롬 브라우저 사용
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.implicitly_wait(3)
# selenium으로 검색 페이지 불러오기 #
naver_urls=[]
for i in search_urls:
driver.get(i)
time.sleep(1) #대기시간 변경 가능
# 네이버 기사 눌러서 제목 및 본문 가져오기#
# 네이버 기사가 있는 기사 css selector 모아오기
a = driver.find_elements(By.CSS_SELECTOR,'a.info')
# 위에서 생성한 css selector list 하나씩 클릭하여 본문 url얻기
for i in a:
i.click()
# 현재탭에 접근
driver.switch_to.window(driver.window_handles[1])
time.sleep(3) #대기시간 변경 가능
# 네이버 뉴스 url만 가져오기
url = driver.current_url
print(url)
if "news.naver.com" in url:
naver_urls.append(url)
else:
pass
# 현재 탭 닫기
driver.close()
# 다시처음 탭으로 돌아가기(매우 중요!!!)
driver.switch_to.window(driver.window_handles[0])
print(naver_urls)
오류발생
1 2 3 4 5 6 7 8 9 10 | 오류발생 1) NameError Traceback (most recent call last) Cell In[4], line 38 35 print("\n크롤링할 종료 페이지: ",page2,"페이지") 37 # naver url 생성 ---> 38 search_urls = makeUrl(search,page,page2) 40 ## selenium으로 navernews만 뽑아오기## 41 # 버전에 상관 없이 os에 설치된 크롬 브라우저 사용 42 driver = webdriver.Chrome(ChromeDriverManager().install()) | cs |
해결방안과 이유
1 2 | 오류 메시지를 보니 NameError로 urllib 모듈을 불러오지 않았다. 따라서 코드 상단에 urllib 모듈을 import하도록 함 | cs |