-
2022년 12월 12일 월요일(크롤링,selenium을 통한 크롬제어방법)개발/개발일지(국비지원) 2022. 12. 12. 22:09728x90
기상정보를 가져와,
데이터를 원하는형태로 수정 후 분석해보았다.
47-52행
BeautifulSoup를 통해
url에 해당하는 res변수를 "html.parser"를 통해 검사하고,
soup객체에 저장한다.
soup에서 .find("title").string을 통해
데이터 에서 title태그를 찾아서
title객체에 저장해준다.
wf객체도 똑같은 방식으로 진행하였다.
62행-68행
인터넷에서 크롤링을해서,
urlretrieve(url,"저장할파일명") 을 통해서
파일을 저장해주었다.
70-78행
BeautifulSoup객체로
객체를 분석하여 soup객체에 저장하고,
soup객체에서 select_one("rss pubDate").string
rss 태그의 하위태그 중 pubDate태그를 선택하여
.string 을 통해 선택된 태그의 내용을 가져오게된다
80-85행
위에 select_one과 달리
select는 태그 여러개를 리스트로 리턴해준다.
location 태그들의
하위태그를 선택하여
원하는태그를 출력하는
두가지방법이다.
116-125행
네이버에서 환율에 대한 정보를 크롤링를 해보았다.
sel이라는 사용자함수에 람다방식으로
soup.select(변수)로 설정하였다
sel("div.head_info")를 사용하면,
div태그 중 class 속성이 head_info인 태그를 조회하여
hlist에 저장하고
똑같은방법으로 h3.h_lst택를 조회하여
htitle변수에 저장한다.
127-140행
그래프출력을 위해 데이터를 저장했다.
반복문을통해
tag = hlist (환율정보) // title = htitle 통화명(국가명)
을 저장하고
국가명, 환율정보, 상승/하락수치 값을 출력해주었다.
위에서 정리한 데이터들을 바탕으로
한눈에 알아볼수있게
상승/하락 여부 데이터에 대한
데이터의 시각화를 그래프를통해 나타내었다.
막대그래프와 선그래프를 통해 알수있다.
▼결과▼
198행
크롬을 제어할수있는 실행파일을 원하는 위치에 저장하고,
webdriver.Chorme("설정한위치")를 하여
비어있는 브라우저를 실행한다.
201행
비어있는브라우저에 driver.get("원하는 url")
url을 불러온다
메뉴바에서 pypi인 값을 클릭하고 이동한후
5초가 지나면 자동종료하게 설정하였다.
브라우저의 자바스크립트 함수를 싱행하는 방법과
태그들을 선택하는 방법에대한 정리를했다.
246-247행
크롬을 제어할수있는 driver설정과
driver.get을 통해 네이버 로그인 화면을 가져온다.
249-252행
id= input("네이버 아이디를 입력하세요:")
콘솔창에 출력될 내용을 설정해주고
driver.execute_script("document.getElementsByName('id')[0].value='"+id+"'")
를 통해 name=id인 입력칸에
콘솔창에서 입력한 id를 전달해준다.
마찬가지로,
pw 는 콘솔창에 입력하게 될 변수이고,
pw입력칸에 콘솔창에 입력한값이 전달되게된다.
262행
driver.find_element('xpath','//*[@id="log.login"]').click()
에 의해서
xpath: xml방식으로 태그를 찾아준다.
// : 맨위에서부터
*:모든태그들중
[]:속성을 정의해준다.
@id = ?? 설정한 id와 같은태그를선택하여
click() 클릭해준다.
여기선 결국 로그인버튼을 클릭해준다.
원하는 페이지에서
해당하는 이미지들을 PC에 저장하는 방법이다.
276행-280행
images에 css selector를 통해
id값이 imglist 에 div 태그의 a태그의 img 데이터들을 저장해준다.
282행-287행
images에 저장된 데이터들을
반복문을통해
img_url에
image : <img src='...'> 형태로
하나하나씩 저장된다.
289-292행
img_folder = './img'
현재폴더에 img라는 이름으로 하위폴더의 경로를 설정해준다.
조건문을통해 img폴더가없다면 폴더가 생성되게해준다.
294-299행
반복문에
index,link in enumerate(img_url) :
을 통해 index는 순서값을
link에는 url정보를 갖게된다.
req.urlretrieve(link,f'./img/{index}.jpg')를 통해서
파일 하나하나가 생성된다
현재화면을 이미지 파일로 저장하는 방법이다(스크린샷)
driver.save_screenshot("폴더위치/파일이름")을 통해
쉽게 파일을 생성할수있다.
728x90'개발 > 개발일지(국비지원)' 카테고리의 다른 글
2022년 12월 14일 (외부파일 데이터전처리, 데이터 시각화) (0) 2022.12.14 2022년 12월 13일 화요일(데이터의 시각화) (0) 2022.12.13 2022년 12월 9일 금요일(결측값처리,자료형변환,groupby,concat,merge,크롤링) (0) 2022.12.09 2022년 12월 8일 목요일(데이터의시각화,pandas를이용한 데이터시각화, 데이터전처리) (0) 2022.12.08 2022년 12월 7일 수요일(numpy와, 빅데이터분석, 데이터시각화) (0) 2022.12.07