ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022년 12월 12일 월요일(크롤링,selenium을 통한 크롬제어방법)
    개발/개발일지(국비지원) 2022. 12. 12. 22:09
    728x90

    기상정보를 가져와,

    데이터를 원하는형태로 수정 후 분석해보았다.

     

    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

    댓글

Designed by Tistory.