ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [3강 정리] 파이썬(Python) 반복문, venv 설정, 웹크롤링(bs4), select, select_one
    웹개발 종합반 2023. 8. 3. 23:35
    728x90
    더보기

    배운것

     

    1. 파이썬 반복문 사용방법 (for~in~)

    2. 파이썬 venv 설정방법

    3. 파이썬 기능별 설치명령문

     

     


    [목표]

    1. 파이썬 기초 문법을 안다.
    2. 원하는 페이지를 스크래핑 할 수 있다.

    🔷 1.  Python

     

      1. 파이썬 기초 문법

    ◈ 자료형
    a = 2
    b = 3
    print(a+b)

    🔍 파이썬은 동적 타입 언어로, 변수를 선언할 때 명시적으로 자료형을 지정하지 않아도 된다.
    즉, int나 double과 같은 자료형을 변수에 선언하지 않고도 값을 할당할 수 있다.

     

    ◈ 리스트형
    a=['사과','배','감']

    ◈ Dictionary형
    a= {'name':'영수','age':24}

     

    ◈ 함수:
    def (함수를 선언하겠다)
    def hey():
       print(‘헤이!’)

    # 참고: 자바스크립트에서는
    function f(x) {
       return 2*x+3
    }

    # 파이썬에서는
    def f(x):
        return 2*x+3

     



    ◈ 조건문 (if / else)
    age = 25
    if age > 20:
          print("성인입니다")
    else:
          print("청소년입니다")

     

    ◈ 반복문 (for~in~ : )
    for (선언변수) in (배열): 

    ex) 
    ages =[5,10,13,23,25,9]
    for a in ages:
        if a>20:
            print("성인입니다")
        else:
            print("청소년입니다")

     

    👉 ages의 하나하나를 가져와서 a로 넣고 그 a를 밑에서 가져다 쓴다.

     

     

     

     

     



    2. 가상환경(venv) 설치

    venv(가상 환경)은 파이썬에서 제공하는 가상 환경 관리 도구로, 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경이다.

    프로젝트별로 독립적인 파이썬 환경을 구성하여 패키지 의존성을 분리하고 프로젝트 간의 충돌을 방지하는 데 사용된다.

     

     

     


    가상환경(venv) 설정

     

    1. 

    $ python -m venv venv 후 인터프리터(venv)로 변경(활성화)

     

     

    정상

     

     

     

     

     

    2. requests  패키지 설치   

    $ pip install requests   

     

     

     

     

     

    💬 requests 라이브러리가 fetch의 역할을 한다는데 그럼 두 가지의 정확한 공통점과 차이점이 무엇일까? 

     

    🔽🔽🔽

     

    ⭐ fetch / requests ❓❗

    fetch와 requests는 모두 서버로 HTTP 요청을 보내고, 응답을 받아올 수 있는 기능을 제공하는 라이브러리/함수이다.

    fetch는 JavaScript에서 사용되는 내장 함수로, 브라우저 환경에서 웹 API 중 하나인 Fetch API를 사용하여 HTTP 요청을 수행하며, 주로 웹 애플리케이션에서 비동기적으로 서버와 통신할 때 사용된다.
    반면, requests는 Python에서 사용되는 외부 라이브러리로, HTTP 클라이언트 라이브러리로서 다양한 기능을 제공한다. requests를 사용하면 Python 코드에서 간편하게 HTTP 요청을 생성하고, 서버로부터의 응답을 받아올 수 있다.

    두 라이브러리는 비슷한 목적을 가지고 있으며, HTTP 요청을 처리하는 데에 있어서 유사한 기능을 제공하지만,
    사용 방식이나 문법 등은 각각 다를 수 있으며,
    fetch는 브라우저 환경에서,
    requests는 Python 환경에서 사용된다.

     

     

     

    // requests 사용 예시코드 
    // 모든 구의 IDEX_MVL 값을 찍어보자
    
    import requests # requests  // 라이브러리 설치 필요
    
    r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
    rjson = r.json()
    
    rows = rjson['RealtimeCityAir']['row']
    
    for a in rows:
    	gu_name = a['MSRSTE_NM']
    	gu_mise = a['IDEX_MVL']
    	print(gu_name, gu_mise)

     

     



     

    ✅ 실습(1) 웹 크롤링 

     

    $ python -m venv venv 후 인터프리터(venv)로 변경(활성화)
    $ pip install requests   
    $ pip install bs4

     

     

     

    <크롤링 기본 준비코드>

    import requests

    from bs4 import BeautifulSoup

     

    URL = "https://movie.daum.net/ranking/reservation"

    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(URL, headers=headers)

    soup = BeautifulSoup(data.text, 'html.parser')

     

    <크롤링 준비순서>

    ① URL에 크롤링 할 원주소 넣기
    ② selector copy하기 (웹)
    ③ 필요한 코드부분까지 편집 후 리스트로(soup.select) 준비하기
    ④ for in으로 반복문 돌린 후 원하는 부분으로 세분화하여 출력하기
    ⑤ 가져오려는곳의 클래스명 확인하기
    ⑥ 원하는 값만 가져오기 

     

    # 선택자를 사용하는 방법 (copy selector)
    soup.select('태그명')
    soup.select('.클래스명')
    soup.select('#아이디명')
    
    soup.select('상위태그명 > 하위태그명 > 하위태그명')
    soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
    
    # 태그와 속성값으로 찾는 방법
    soup.select('태그명[속성="값"]')
    
    # 한 개만 가져오고 싶은 경우
    soup.select_one('위와 동일')

     

     

     


     

    ① URL에 크롤링 할 원주소 넣기

    ② selector copy하기 (웹)

     

     

    원했던 값이 정상 출력되는점을 확인해본다.

     

     

     

     

     

     

     

    ③ 필요한 코드부분까지 편집 후 리스트로(soup.select) 준비하기

    ④ for in으로 반복문 돌린 후 원하는 부분으로 세분화하여 출력하기

    ⑤ 가져오려는곳의 클래스명 확인하기

     

     

     

     

     

     

    ⑥ 원하는 값만 가져오기 

     

     

    ⭐ select / select_one 사용할 때 

    태그 안의 텍스트를 찍고 싶을 땐 → 태그.text
    태그 안의 속성을 찍고 싶을 땐 → 태그['속성']

     

     

     

     

    728x90
Designed by Tistory.