150 웹스크롤링 실전8 (이미지 )
문제459. (복습 문제) 어제 유튜브 댓글로 받은 csv 파일을 판다스 데이터 프레임으로 구성하시오.
import pandas as pd ytb_tbk = pd.read_csv("c:\\data\\ytb_tbg_입짧은 햇님.csv") ytb_tbk
문제460. (복습 문제) 데이터 프레임의 전체 건수를 확인하세요.
import pandas as pd ytb_tbg = pd.read_csv("c:\\data\\ytb_tbg_입짧은 햇님.csv") ytb_tbg[:].count()
문제461. (복습 문제) 댓글의 '귀엽'이라는 단어를 포함한 모든 댓글을 출력하시오.
import pandas as pd a = pd.read_csv("c:\\data\\a.csv") a[:][a.Comment.str.count('귀엽')>0]
a.Comment.str은 a 데이터프레임의 Comment 시리즈를 문자열로 변환. 그러면 문자열 함수로 사용 가능
ㅇ문자열 함수 복습
isalpha(), isdigit(), isalnum(), upper(), lower(), lstrip(), rstrip(), strip(), count(), find(), split(), join(), replace(), encode(), decode()
문제462. (복습 문제) 댓글을 3개이상 올린 아이디와 댓글 건수를 출력하시오
import pandas as pd a = pd.read_csv("c:\\data\\a.csv") result = a.groupby('ID')['Comment'].count().reset_index() # ID별 건수 result.columns=['id','cnt'] result[:][result.cnt >= 3]
문제463. (복습 문제) id가 김성연이라는 분이 올린 댓글들을 출력하시오.
import pandas as pd a = pd.read_csv("c:\\data\\a.csv") a[:][a['ID'].apply(lambda x : '김성연' in x)] # 또는 a[:][a['ID'].str.strip() == '김성연']
문제464. (복습 문제) 댓글에 '느끼'라는 단어가 포함되어져 있는 댓글이 있는지 출력하시오.
import pandas as pd a = pd.read_csv("c:\\data\\a.csv") a[:][a.Comment.str.count('느끼') > 0]
문제465. 유튜브 댓글 csv 파일 5개를 하나의 데이터 프레임으로 만드시오( 데이터 프레임명 : all_data)
import pandas as pd a = pd.read_csv("c:\\data\\a.csv") b = pd.read_csv("c:\\data\\b.csv") d = pd.read_csv("c:\\data\\d.csv") e = pd.read_csv("c:\\data\\e.csv") f = pd.read_csv("c:\\data\\f.csv") all_data = pd.concat([a,b,d,e,f], axis = 0) all_data
pd.concat() : 데이터 프레임을 연결할 때 사용
문제466. all_data 데이터 프레임을 c:\\data\\에 저장하시오.
import pandas as pd a = pd.read_csv("c:\\data\\a.csv") b = pd.read_csv("c:\\data\\b.csv") d = pd.read_csv("c:\\data\\d.csv") e = pd.read_csv("c:\\data\\e.csv") f = pd.read_csv("c:\\data\\f.csv") all_data = pd.concat([a,b,d,e,f], axis = 0) all_data all_data.to_csv("c:\\data\\all_data.csv")
문제467. my_data_visual() 자동화 스크립트를 수행해서 all_data.csv의 긍정단어와 부정단어 순위를 출력하시오.
문제468. all_data 데이터 프레임에서 '없어서'가 포함된 댓글들을 출력하시오.
all_data[:][all_data.Comment.str.count('없어서') > 0]
문제469. 데이터 분석 자동화 스크립트를 모듈화 시켜서 다음과 같이 실행되게 하세요.
import my_data as m
m.my_data_visual()
주피터 노트북 홈디렉토리인 c:\\Users\\ejcej 밑에 my_data.py라는 이름으로 저장 > 파일형식은 모든파일

모듈화해서 바로 사용하면 됨.
문제471. 위의 코드를 수정해서 결과 더보기를 눌러서 이미지가 더 수집될 수 있도록 하시오.
def scroll_image_google(keyword): import urllib.request # 파이썬에서 웹의 url 을 인식할 수 있게하는 모듈 from bs4 import BeautifulSoup from selenium import webdriver # 크롬 웹브라우져를 자동으로 제어하기 위해 from selenium.webdriver.common.keys import Keys # 키보드를 컴퓨터가 알아서 누르기 위해서 import time # 중간중간 sleep 을 걸어야 해서 time 모듈 import from tqdm import tqdm_notebook ########################### url 받아오기 ########################### # 웹브라우져로 크롬을 사용할거라서 크롬 드라이버를 다운받아 위의 위치에 둔다 # 팬텀 js로 하면 백그라운드로 실행할 수 있음 binary = 'C:\\data\\chromedriver_win32\\chromedriver.exe' # 브라우져를 인스턴스화 browser = webdriver.Chrome(binary) # 구글의 이미지 검색 url 받아옴(키워드를 아무것도 안 쳤을때의 url) browser.get("https://www.google.co.kr/imghp?hl=ko&tab=wi&ei=l1AdWbegOcra8QXvtr-4Cw&ved=0EKouCBUoAQ") # 검색창에 검색 키워드를 넣기 위해서 웹페이지의 검색창의 클래스 이름을 찾아서 검색창에 해당하는 부분이 # 어디다라고 알려주는 elem 객체를 만듭니다. elem = browser.find_element_by_xpath("//*[@class='gLFyf gsfi']") ########################### 검색어 입력 ########################### # elem 이 input 창과 연결되어 스스로 햄버거를 검색 elem.send_keys(keyword) # 웹에서의 submit 은 엔터의 역할을 함 elem.submit() ########################### 반복할 횟수 ########################### # 스크롤을 내리려면 브라우져 이미지 검색결과 부분(바디부분)에 마우스 클릭 한번 하고 End키를 눌러야함 for i in range(1, 6): browser.find_element_by_xpath("//body").send_keys(Keys.END) time.sleep(5) # END 키 누르고 내려가는데 시간이 걸려서 sleep 해줌 # 결과더보기 browser.find_element_by_xpath("//*[@class='mye4qd']").send_keys(Keys.ENTER) for i in range(1,5): browser.find_element_by_xpath("//body").send_keys(Keys.END) time.sleep(5) time.sleep(5) # 네트워크 느릴까봐 안정성 위해 sleep 해줌 html = browser.page_source # 크롬브라우져에서 현재 불러온 소스 가져옴 soup = BeautifulSoup(html, "lxml") # html 코드를 검색할 수 있도록 설정 ########################### 그림파일 저장 ########################### params = [] imgList = soup.find_all("img", class_="rg_i Q4LuWd") # 구글 이미지 url 이 있는 img 태그의 _img 클래스에 가서 for im in imgList: try : params.append(im["src"]) # params 리스트에 image url 을 담음 except KeyError: params.append(im["data-src"]) # src 에서 못가져오면 data-src 에서 가져와라 for idx, p in tqdm_notebook(enumerate(params,1)): # params 리스트의 요소를 하나씩 가져오는데 번호를 부여해서 가져 # 다운받을 폴더경로 입력 # 옵니다. 그런데 1번부터 부여합니다. urllib.request.urlretrieve( p ,"c:/googleimages/" +keyword+'_'+ str(idx) + ".jpg") # enumerate 는 리스트의 모든 요소를 인덱스와 쌍으로 추출 # 하는 함수 . 숫자 1은 인덱스를 1부터 시작해라 ~ # 끝나면 브라우져 닫기 browser.quit()
문제472. 카페게시글에 1823 에 네이버 이미지 검색 url로 접속하세요.
https://search.naver.com/search.naver?where=image&sm=stb_nmr&
: 네이버 이미지검색
''의 네이버 이미지검색 결과입니다.
search.naver.com
1. 검색창의 클래스 이름
2. 이미지의 상세 url이 있는 곳 태그 이름과 클래스 이름
def scroll_image_naver(keyword): import urllib.request # 파이썬에서 웹의 url 을 인식할 수 있게하는 모듈 from bs4 import BeautifulSoup from selenium import webdriver # 크롬 웹브라우져를 자동으로 제어하기 위해 from selenium.webdriver.common.keys import Keys # 키보드를 컴퓨터가 알아서 누르기 위해서 import time # 중간중간 sleep 을 걸어야 해서 time 모듈 import from tqdm import tqdm_notebook ########################### url 받아오기 ########################### # 웹브라우져로 크롬을 사용할거라서 크롬 드라이버를 다운받아 위의 위치에 둔다 # 팬텀 js로 하면 백그라운드로 실행할 수 있음 binary = 'C:\\data\\chromedriver_win32\\chromedriver.exe' # 브라우져를 인스턴스화 browser = webdriver.Chrome(binary) # 네이버의 이미지 검색 url 받아옴(키워드를 아무것도 안 쳤을때의 url) browser.get("https://search.naver.com/search.naver?where=image&sm=stb_nmr& ") # 검색창에 검색 키워드를 넣기 위해서 웹페이지의 검색창의 클래스 이름을 찾아서 검색창에 해당하는 부분이 # 어디다라고 알려주는 elem 객체를 만듭니다. elem = browser.find_element_by_id('nx_query') ########################### 검색어 입력 ########################### # elem 이 input 창과 연결되어 스스로 햄버거를 검색 elem.send_keys(keyword) # 웹에서의 submit 은 엔터의 역할을 함 elem.submit() ########################### 반복할 횟수 ########################### # 스크롤을 내리려면 브라우져 이미지 검색결과 부분(바디부분)에 마우스 클릭 한번 하고 End키를 눌러야함 for i in range(1, 10): browser.find_element_by_xpath("//body").send_keys(Keys.END) time.sleep(5) # END 키 누르고 내려가는데 시간이 걸려서 sleep 해줌 time.sleep(5) # 네트워크 느릴까봐 안정성 위해 sleep 해줌 html = browser.page_source # 크롬브라우져에서 현재 불러온 소스 가져옴 soup = BeautifulSoup(html, "lxml") # html 코드를 검색할 수 있도록 설정 ########################### 그림파일 저장 ########################### params = [] imgList = soup.find_all("img", class_="_image _listImage") # 네이버 이미지 url 이 있는 img 태그의 _img 클래스에 가서 for im in imgList: try : params.append(im["src"]) # params 리스트에 image url 을 담음 except KeyError: params.append(im["data-src"]) # src 에서 못가져오면 data-src 에서 가져와라 for idx, p in tqdm_notebook(enumerate(params,1)): # params 리스트의 요소를 하나씩 가져오는데 번호를 부여해서 가져 # 다운받을 폴더경로 입력 # 옵니다. 그런데 1번부터 부여합니다. urllib.request.urlretrieve( p ,"c:\\naverimages\\" +keyword+'_'+ str(idx) + ".jpg") # enumerate 는 리스트의 모든 요소를 인덱스와 쌍으로 추출 # 하는 함수 . 숫자 1은 인덱스를 1부터 시작해라 ~ # 끝나면 브라우져 닫기 browser.quit()
문제473. 마이크로소프트 bing에서 이미지를 검색하는 웹스크롤러를 만드세요.
1. 검색참에 클래스 이름 또는 id 가져오기
2. 이미지에 대한 상세url을 가져오는 클래스 이름을 알아냄
3. PC에 저장
def scroll_image_bing(keyword): import urllib.request # 파이썬에서 웹의 url 을 인식할 수 있게하는 모듈 from bs4 import BeautifulSoup from selenium import webdriver # 크롬 웹브라우져를 자동으로 제어하기 위해 from selenium.webdriver.common.keys import Keys # 키보드를 컴퓨터가 알아서 누르기 위해서 import time # 중간중간 sleep 을 걸어야 해서 time 모듈 import from tqdm import tqdm ########################### url 받아오기 ########################### # 웹브라우져로 크롬을 사용할거라서 크롬 드라이버를 다운받아 위의 위치에 둔다 # 팬텀 js로 하면 백그라운드로 실행할 수 있음 binary = 'C:\\data\\chromedriver_win32\\chromedriver.exe' # 브라우져를 인스턴스화 browser = webdriver.Chrome(binary) # Bing의 이미지 검색 url 받아옴(키워드를 아무것도 안 쳤을때의 url) browser.get("https://www.bing.com/?scope=images&nr=1&FORM=NOFORM") time.sleep(5) # 검색창에 검색 키워드를 넣기 위해서 웹페이지의 검색창의 클래스 이름을 찾아서 검색창에 해당하는 부분이 # 어디다라고 알려주는 elem 객체를 만듭니다. elem = browser.find_element_by_id('sb_form_q') ########################### 검색어 입력 ########################### # elem 이 input 창과 연결되어 스스로 햄버거를 검색 elem.send_keys(keyword) # 웹에서의 submit 은 엔터의 역할을 함 elem.submit() ########################### 반복할 횟수 ########################### # 스크롤을 내리려면 브라우져 이미지 검색결과 부분(바디부분)에 마우스 클릭 한번 하고 End키를 눌러야함 for i in tqdm(range(1, 10), desc = '이미지 검색중'): browser.find_element_by_xpath("//body").send_keys(Keys.END) time.sleep(5) # END 키 누르고 내려가는데 시간이 걸려서 sleep 해줌 time.sleep(5) # 네트워크 느릴까봐 안정성 위해 sleep 해줌 html = browser.page_source # 크롬브라우져에서 현재 불러온 소스 가져옴 soup = BeautifulSoup(html, "lxml") # html 코드를 검색할 수 있도록 설정 ########################### 그림파일 저장 ########################### params = [] imgList = soup.find_all("img", class_="mimg") # 네이버 이미지 url 이 있는 img 태그의 _img 클래스에 가서 for im in tqdm(imgList, desc = '이미지 파일 모으는 중'): try : params.append(im["src"]) # params 리스트에 image url 을 담음 except KeyError: params.append(im["data-src"]) # src 에서 못가져오면 data-src 에서 가져와라 for idx, p in tqdm(enumerate(params,1), desc = '이미지 파일 저장'): # params 리스트의 요소를 하나씩 가져오는데 번호를 부여해서 가져 # 다운받을 폴더경로 입력 # 옵니다. 그런데 1번부터 부여합니다. urllib.request.urlretrieve( p ,"c:\\bingimages\\" +keyword+'_'+ str(idx) + ".jpg") # enumerate 는 리스트의 모든 요소를 인덱스와 쌍으로 추출 # 하는 함수 . 숫자 1은 인덱스를 1부터 시작해라 ~ # 끝나면 브라우져 닫기 browser.quit()
문제474. 데이터 분석 자동화 스크립트 안에 다음과 같이 구글 이미지를 스크롤링하는 코드를 추가하시오.
문제475. 데이터 분석 자동화 스크립트 안에 다음과 같이 빙 이미지를 스크롤링하는 코드를 추가하시오.
'Study > class note' 카테고리의 다른 글
python / 파이썬과 mySQL 연동 (0) | 2022.01.10 |
---|---|
python / 파이썬 오라클 연동 (0) | 2022.01.09 |
python / 웹스크롤링 감성분석 (0) | 2022.01.05 |
감성분석 기본코드(한글) (0) | 2022.01.05 |
python / 네이버 블로그 웹스크롤링 (0) | 2022.01.04 |