ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬으로 웹 스크랩핑하기(Web scraping, beautifulsoup4)
    카테고리 없음 2022. 9. 13. 22:21
    반응형

    1. 라이브러리 인스톨

    beautifulsoup4 인스톨하기

    pip install beautifulsoup4

    2. 페이지 읽어오기

    from urllib.request import urlopen
    from bs4 import BeautifulSoup
    
    url = '' # 스크래핑할 url
    
    page = urlopen(url) # 해당 페이지 오픈 및 html 파일 가져오기
    soup = BeautifulSoup(page, "html.parser") # html형식에 대한 파싱

    3. 페이지 파싱하기

    3.1 예시 페이지 준비

    page = '''
    <html>
    <head>
        <title>제목</title>
    </head>
    <body>
    <h1>제목1</h1>
        <p>내용2</p>
    <h1 class='red'>제목2</h1>
        <p class='blue'>
        	<a href="http://주소" class="web" id="shark">세부내용</a>
        </p>
    </body>
    </html>
    '''

    3.2 페이지 파싱하기

    from urllib.request import urlopen
    #from bs4 import BeautifulSoup
    
    #준비된 예시 page로 대체
    #url = 'https://movie.naver.com/movie/sdb/rank/rmovie.naver'
    #page = urlopen(url)
    
    soup = BeautifulSoup(page, "html.parser")
    
    # 첫번째 tag <h1>을 찾는다
    tmp = soup.find("h1")
    print('첫번째 tag <h1>을 찾는다')
    print(tmp,'\n')
    
    # 모든 tag <h1>을 찾는다
    tmp = soup.find_all("h1")
    print('모든 tag <h1>을 찾는다')
    print(tmp,'\n')
    
    # class red를 가지는 tag <h1>을 찾는다
    tmp = soup.find("h1",{'class':'red'})
    print('class red를 가지는 tag <h1>을 찾는다')
    print(tmp)

    find_all은 list를 반환하며 find는 한개의 값을 반환한다

    이때 반환된 값은 문자열이 아니다

     

    3.3 파싱값 세부 파싱

    from urllib.request import urlopen
    from bs4 import BeautifulSoup
    
    #준비된 예시 page로 대체
    #url = 'https://movie.naver.com/movie/sdb/rank/rmovie.naver'
    #page = urlopen(url)
    
    soup = BeautifulSoup(page, "html.parser")
    
    # class blue를 가지는 tag <p>을 찾는다
    tmp = soup.find("p",{'class':'blue'})
    print('class blue를 가지는 tag <p>을 찾는다')
    print(tmp,'\n')
    
    # tmp 내에서 tag <a>를 찾는다
    sub_tmp = tmp.find("a")
    print('tmp 내에서 tag <a>를 찾는다')
    print(sub_tmp,'\n')
    
    # 찾은 tag<a>의 id값
    print(sub_tmp.get('id'),'\n')
    
    # 찾은 tag<a>의 href값
    print(sub_tmp.get('href'),'\n')
    
    # 찾은 tag<a>의 내용
    print(sub_tmp.text)
    
    # 비슷한 명령어로
    # .get(key값)은 .attrs[key값] 으로 대체 가능하다

    4. 파일 다운로드

    from urllib.request import urlretrieve
    
    img_url = '~~~.jpg' # 이미지 주소 
    
    urlretrieve(img_url, "movie.jpg")
    반응형

    댓글

Designed by Tistory.