2022-01-25 ~ 26 TIL

yeopto·2022년 1월 26일
0

TIL

목록 보기
21/24
post-thumbnail

한 것

  1. Chapter 3-04 까지

TIL

  1. Python

    • 불 자료형
      • True, False → 자바스크립트와 다르게 첫 글자가 대문자여야 함.
      • not, and, or로 논리 연산자 이용할 수 있다.
    • 함수
    # 참고: 자바스크립트에서는
    function f(x) {
        return 2*x+3
    }
    
    def f(x):
        return 2*x+3   # 중괄호 대신에 들여쓰기로 각 블록의 범위를 표시한다.
    
    f(2)  # 7
    • 조건문
      • else if는 elif로 줄여쓴다.
    • Python package
      • 패키지는 모듈(일종의 기능들 묶음)을 모아 놓은 단위이고, 이런 패키지들의 묶음을 라이브러리라고 한다. 하지만 일반적으로 패키지, 라이브러리 두 용어를 혼용해서 많이 씀.
    • 가상 환경(virtual environment) 이란?
      • 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경
      • 한 프로젝트에서 쓰는 패키지의 수는 다양하고, 서로 다른 프로젝트에서 요구하는 패키지의 목록이나 버전이 다를 수 있다.
      • 요구사항이 다른 두 프로젝트를 한 컴퓨터에서 진행해야하는 상황에서 각 프로젝트마다 가상환경을 만들고 그 안에 필요한 패키지를 설치해주면 필요한 버전이 다르거나 두 패키지가 충돌을 일으키는 등의 문제 없이 관리 할 수 있다. → 새 프로젝트에서 설치하는 패키지가 많다면 가상환경을 새로 잡아주는 게 좋다.
    python3 -m venv .venv # 새 가상환경 만들기
    
    source .venv/bin/activate # 가상환경 활성화
    
    deactivate # 가상환경 종료
    
    # -----------------------------------------
    
    # pip(python install package)
    
    pip list # 현재 설치된 패키지 목록
    python3 -m pip install <package_name> # 원하는 패키지를 설치할 수 있다.
  2. 웹스크래핑 (web scraping)

    • 웹 페이지에서 우리가 원하는 부분의 데이터를 수집해오는 것을 뜻함. (페이지 추출)
    • beautifulsoup4 → HTML 구조를 파악하는 데 도움 주는 패키지
      • select() → 조건을 만족하는 모든 요소를 리스트에 담아 반환
      • select_one() → 그 중 가장 위에 나오는 요소를 반환
    # 선택자를 사용하는 방법 (copy selector)
    soup.select('태그명')
    soup.select('.클래스명')
    soup.select('#아이디명')
    
    soup.select('상위태그명 > 하위태그명 > 하위태그명')
    soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
    
    # 태그와 속성값으로 찾는 방법
    soup.select('태그명[속성="값"]')
    
    # 한 개만 가져오고 싶은 경우
    soup.select_one('위와 동일')
    • 네이버 영화 순위, 제목, 별점 웹스크래핑 해보기
    import requests
    from bs4 import BeautifulSoup # pip로 패키지 다운
    
    # 타겟 URL을 읽어서 HTML를 받아오고,
    headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
    data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303', headers = headers)
    # 어떤 경우엔 웹사이트에서 웹 스크래핑을 막는 경우가 있다, 이때 get메소드의 인자에 headers를 넣어줘야함.
    # headers에는 User Agent값이 들어가고 자신의 User-Agent는 https://www.whatismybrowser.com/detect/what-is-my-user-agent 여기서 알 수 있다.
    
    # HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
    # soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
    soup = BeautifulSoup(data.text, 'html.parser')
    movies = soup.select('#old_content > table > tbody > tr')
    
    # 이제 코딩을 통해 필요한 부분을 추출하면 된다.
    for movie in movies:
      img_tag = movie.select_one('td.ac > img')
      a_tag = movie.select_one('td.title > div > a')
      td_point_tag = movie.select_one('td.point')
      
      if a_tag and img_tag and td_point_tag is not None:
        print(img_tag.get('alt'), a_tag.text, td_point_tag.text) # 태그의 특정 속성값을 갖고 오기 위해서는 get메소드를 이용한다.
profile
https://yeopto.github.io로 이동했습니다.

0개의 댓글