Crawler
데이터의 종류
- 정형데이터 : 표 형태의 데이터
- 비정형데이터 : 표 형태가 아닌 데이터(ex. 사진, 동영상)
데이터를 어떻게 모을 것인가?
- 가설을 설정한 후 데이터를 수집한다
- 회사 내에 있는 자료는 대부분 정형 데이터인데 정형 데이터로만 해결할 수 있는 문제는 드물다
웹 크롤링은 인터넷에 있는 자료를 가져오는 것임
Selenium : 웹 페이지의 모든 데이터를 가져옴
Beautiful Soup : 셀레늄 전체 데이터에서 원하는 데이터만 추출
설치
%pip install chromedriver_autoinstaller
import chromedriver_autoinstaller
chromedriver_autoinstaller.install( )
from selenium import webdriver
driver= webdriver.Chrome()
네이버에서 검색하기
# naver에서 검색하기
#Step 1. 필요한 모듈을 로딩합니다
from selenium import webdriver
import time
#Step 2. 사용자에게 검색 관련 정보들을 입력 받습니다.
print("=" *100)
print(" 네이버")
print("=" *100)
query_txt = input('1.수집할 자료의 키워드는 무엇입니까?(여러개일 경우 , 로 구분하여 입력): ')
#query_txt = '해양자원,도시재생'
print("\n")
#Step 3. 크롬 드라이버 설정 및 웹 페이지 열기
chrome_path = "c:/temp/chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
url = 'https://www.naver.com/'
driver.get(url) #페이지에 접속
time.sleep(5)
#Step 4. 자동으로 검색어 입력 후 조회하기
element = driver.find_element_by_id("query")
driver.find_element_by_id("query").click( ) #입력창? 클릭
element.send_keys(query_txt) #글자입력
element.send_keys("\n") #엔터키 입력
다음에서 검색하기
# 다음에서 검색하기
#Step 1. 필요한 모듈을 로딩합니다
from selenium import webdriver
import time
#Step 2. 사용자에게 검색 관련 정보들을 입력 받습니다.
print("=" *100)
print("다음")
print("=" *100)
query_txt = input('1.수집할 자료의 키워드는 무엇입니까?(여러개일 경우 , 로 구분하여 입력): ')
#query_txt = '해양자원,도시재생'
print("\n")
#Step 3. 크롬 드라이버 설정 및 웹 페이지 열기
chrome_path = "c:/temp/chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
url = 'https://www.daum.net/'
driver.get(url) #페이지에 접속
time.sleep(5)
#Step 4. 자동으로 검색어 입력 후 조회하기
element = driver.find_element_by_id("q")
driver.find_element_by_id("q").click( ) #입력창? 클릭
element.send_keys(query_txt) #글자입력
element.send_keys("\n") #엔터키 입력
구글에서 검색하기
# 구글에서 검색하기
#Step 1. 필요한 모듈을 로딩합니다
from selenium import webdriver
import time
#Step 2. 사용자에게 검색 관련 정보들을 입력 받습니다.
print("=" *100)
print("구글")
print("=" *100)
query_txt = input('1.수집할 자료의 키워드는 무엇입니까?(여러개일 경우 , 로 구분하여 입력): ')
#query_txt = '해양자원,도시재생'
print("\n")
#Step 3. 크롬 드라이버 설정 및 웹 페이지 열기
chrome_path = "c:/temp/chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
url = 'https://www.google.co.kr/'
driver.get(url) #페이지에 접속
time.sleep(5)
#Step 4. 자동으로 검색어 입력 후 조회하기
element = driver.find_element_by_name("q")
driver.find_element_by_name("q").click( ) #입력창? 클릭
element.send_keys(query_txt) #글자입력
element.send_keys("\n") #엔터키 입력
경남대학교에서 검색
# 경남대학교 홈페이지에서 검색 돋보기 클릭 후 검색하기
#Step 1. 필요한 모듈을 로딩합니다
from selenium import webdriver
import time
#Step 2. 사용자에게 검색 관련 정보들을 입력 받습니다.
print("=" *100)
print("경남대학교")
print("=" *100)
query_txt = input('1.수집할 자료의 키워드는 무엇입니까?(여러개일 경우 , 로 구분하여 입력): ')
#query_txt = '해양자원,도시재생'
print("\n")
#Step 3. 크롬 드라이버 설정 및 웹 페이지 열기
chrome_path = "c:/temp/chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
url = 'https://www.kyungnam.ac.kr/sites/ko/index.do'
driver.get(url) #페이지에 접속
time.sleep(5)
#Step 4. 자동으로 검색어 입력 후 조회하기
element = driver.find_element_by_xpath('/html/body/div[2]/div[1]/div/div[3]/ul/li[1]/a')
driver.find_element_by_xpath('/html/body/div[2]/div[1]/div/div[3]/ul/li[1]/a').click( ) #입력창? 클릭
element = driver.find_element_by_name("qt")
driver.find_element_by_name("qt").click( )
element.send_keys(query_txt) #글자입력
element.send_keys("\n") #엔터키 입력
사이트 접속 -> 키워드 입력 -> 검색 의 순서로 진행
위의 네이버 검색 코드와 동일
# 네이버에서 검색하기
#Step 1. 필요한 모듈을 로딩합니다
from selenium import webdriver
import time
#Step 2. 사용자에게 검색 관련 정보들을 입력 받습니다.
print("=" *100)
print(" 네이버")
print("=" *100)
query_txt = input('1.수집할 자료의 키워드는 무엇입니까?(여러개일 경우 , 로 구분하여 입력): ')
#query_txt = '해양자원,도시재생'
print("\n")
#Step 3. 크롬 드라이버 설정 및 웹 페이지 열기
chrome_path = "c:/temp/chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
url = 'https://www.naver.com/'
driver.get(url) #페이지에 접속
time.sleep(5)
#Step 4. 자동으로 검색어 입력 후 조회하기
element = driver.find_element_by_id("query")
driver.find_element_by_id("query").click( ) #입력창? 클릭
element.send_keys(query_txt) #글자입력
element.send_keys("\n") #엔터키 입력
검색어의 뉴스 페이지에서 기사 가져오기
#Step 5.뉴스 선택
driver.find_element_by_link_text('뉴스').click()
time.sleep(2)
#Step 6.Beautiful Soup 로 본문 내용만 추출하기
from bs4 import BeautifulSoup
html_1 = driver.page_source #현재 페이지의 전체 소스코드를 다 가져오기
soup_1 = BeautifulSoup(html_1, 'html.parser')
content_1 = soup_1.find('ul','list_news').find_all('li') # 10개의 li태그
for i in content_1 :
print(i.get_text().replace("\n"," ").strip()) #stripe 좌우공백없애기
print("\n")
텍스트 파일로 저장하기
#Step 7. 표준 출력 방향을 바꾸어 txt 파일에 저장하기
import sys
f_name = input('결과를 저장할 파일명을 쓰세요(예: c:\\temp\\riss.txt): ')
orig_stdout = sys.stdout #표준출력장치
file = open(f_name , 'a' , encoding='UTF-8')
sys.stdout = file #모니터에 출력하지 말고 file 에 출력해라 -> redirection
for i in content_1 :
print(i.get_text().replace("\n",""))
file.close()
sys.stdout = orig_stdout #원래대로 변경 - 다시 화면에 출력시켜라
print('요청하신 데이터 수집 작업이 정상적으로 완료되었습니다')
print('수집된 결과는 %s 에 저장되었습니다' %f_name)
다음에서도 동일한 방법으로 진행 이하생략
한국관광공사에서 어제의 인기 검색어? 추출하기
페이지 접속후 검색어 입력
# 한국관광공사
#Step 1. 필요한 모듈을 로딩합니다
from selenium import webdriver
import time
#Step 2. 사용자에게 검색 관련 정보들을 입력 받습니다.
print("=" *100)
print("한국관광공사")
print("=" *100)
query_txt = input('1.수집할 자료의 키워드는 무엇입니까?(여러개일 경우 , 로 구분하여 입력): ')
#query_txt = '해양자원,도시재생'
print("\n")
#Step 3. 크롬 드라이버 설정 및 웹 페이지 열기
chrome_path = "c:/temp/chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
url = 'https://korean.visitkorea.or.kr'
driver.get(url) #페이지에 접속
time.sleep(5)
#Step 4. 자동으로 검색어 입력 후 조회하기
element = driver.find_element_by_xpath('//*[@id="inp_search"]')
driver.find_element_by_xpath('//*[@id="inp_search"]').click( ) #입력창? 클릭
element.send_keys(query_txt) #글자입력
element.send_keys("\n") #엔터키 입력
beautiful soup로 필요한 내용(인기 검색어) 추출하기
from bs4 import BeautifulSoup
html_1 = driver.page_source #현재 페이지의 전체 소스코드를 다 가져오기
soup_1 = BeautifulSoup(html_1, 'html.parser')
content_1 = soup_1.find('div','box_rightType3').find_all('li') # 10개의 li태그
for i in content_1 :
print(i.get_text().replace("\n"," ").strip()) #stripe 좌우공백없애기
print("\n")
텍스트 파일로 저장하기
import sys
f_name = input('결과를 저장할 파일명을 쓰세요(예: c:\\temp\\riss.txt): ')
orig_stdout = sys.stdout #표준출력장치
file = open(f_name , 'a' , encoding='UTF-8')
sys.stdout = file #모니터에 출력하지 말고 file 에 출력해라 -> redirection
for i in content_1 :
print(i.get_text().replace("\n",""))
file.close()
sys.stdout = orig_stdout #원래대로 변경 - 다시 화면에 출력시켜라
print('요청하신 데이터 수집 작업이 정상적으로 완료되었습니다')
print('수집된 결과는 %s 에 저장되었습니다' %f_name)
'데이터 청년 캠퍼스(경남대학교) > 수업' 카테고리의 다른 글
2021-07-09 (0) | 2021.07.09 |
---|---|
2021 - 07 - 02 (0) | 2021.07.02 |
2021-07-01 (2) (0) | 2021.07.01 |
2021-07-01 (1) (0) | 2021.07.01 |
2021-06-29 (0) | 2021.07.01 |