Python 크롤링

2020. 7. 8. 14:33·프로그래밍 & 개발 환경/Python
728x90

크롤링(crwaling) : 인터넷에서 데이터를 수집하여 받아오는 것

크롤러 : 크롤링을 하는 프로그램

파싱(parsing) : 데이터에서 필요한 내용만 추출하는 것

 

urllib 패키지

  • 인터넷에서 데이터를 받아 오늘 기능들이 들어 있다.

BeautifulSoup 모듈

  • 데이터를 추출(파싱)하는데 필요한 기능들이 들어 있다.

 

크롤링 시작 전 반드시 해당 사이트 url/robots.txt를 확인할 것

robots.txt : 인터넷에서 데이터를 수집하여 받아오는 것

 

robots.txt에서 반드시 확인할 3가지

  • User-agent : 다음 규칙이 적용되는 로봇의 이름
  • Disallow : 차단할 URL 경로
  • Allow : 차단 된 상위 디렉토리의 하위 디렉토리에 있는 URL경로이며 차단 해제 할 디렉토리

 

네이버의 robots.txt

[그림1] 네이버의 robots.txt 2020.07.08일

영화진흥위원회 robots.txt

[그림2] 영화진흥위원호 robots.txt 2020.07.08일

 

urlib

더보기
from urllib.request import urlopen
url ="https://www.kofic.or.kr/"
html = urlopen(url)
print(html.read())

 

[그림3] urllib 예제 출력

 

BeautifulSoup

더보기
from bs4 import BeautifulSoup
from urllib.request import urlopen
url = "https://www.kofic.or.kr/"
html = urlopen(url)
bs_obj = BeautifulSoup(html.read(), "html.parser")
print(bs_obj)

[그림4] BeautifulSoup 예제 출력

 

태그의 내용(text) 추출하기

더보기
# 태그 추출하기

import bs4
html_str= "<html><div>hello</div></html>"
bs_obj = bs4.BeautifulSoup(html_str,"html.parser")
print(bs_obj)
print(bs_obj.find("div"))
print(bs_obj.find("div").text)

[그림5] 태그의 내용 추출 예제 출력

 

findAll()

더보기
import bs4
html_str ="""
<html>
    <body>
        <ul>
            <li>hello</li>
            <li>bye</li>
            <li>welcome</li>
        </ul>
    </body>
</html>
"""
bs_obj = bs4.BeautifulSoup(html_str, "html.parser")
ul = bs_obj.find("ul") # ul태그 찾음
lis = ul.findAll("li") # ul태그안의 li태그 전체 찾기
print(lis)

[그림6] findAll 예제 출력 

 

class 속성

더보기
import bs4
html_str ="""
<html>
    <body>
        <ul class= "greet">
            <li>hello</li>
            <li>bye</li>
            <li>welcome</li>
        </ul>
        <ul class = "reply">
            <li>ok</li>
            <li>no</li>
            <li>sure</li>
        </ul>
    </body>
</html>
"""
bs_obj = bs4.BeautifulSoup(html_str, "html.parser")
ul_reply = bs_obj.find("ul",{"class":"reply"})
print(ul_reply)

[그림7] class 속성 예제 출력

 

태그의 속성값 추출

더보기
import bs4
html_str ="""
<html>
    <body>
        <ul class="see">
            <li><a href="https://www.kofic.or.kr">영화진흥위원회</a></li>
        </ul>
        <ul class ="eat">
            <li><a href="http://www.price.go.kr/tprice/portal/main/main.do">한국소비자원참가격</a></li>
        </ul>
    </body>
</html>

"""
bs_obj = bs4.BeautifulSoup(html_str, "html.parser")
atag = bs_obj.find("a")
print(atag['href'])

[그림8] 태그의 속성값 추출 예제 출력

 

특정 글자 뽑아내기 - 필요한 부분 뽑아내기

 

[그림9] 특정 부분 뽑아내기.
[그림9] 개발자 모드 소스 코드

더보기
import urllib.request
import bs4

url = "https://www.kofic.or.kr/kofic/business/main/main.do"
html = urllib.request.urlopen(url)
bs_obj = bs4.BeautifulSoup(html, "html.parser")
top = bs_obj.find("div",{"class":"gnb"})
print(top)

 

 

[그림10] 특정 글자 뽑아내기 예제 출력

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'프로그래밍 & 개발 환경/Python' 카테고리의 다른 글
  • Python - str lib
  • 쇼핑몰 크롤링
  • Python XML, JSON
  • Python BeautifulSoup 설치 및 개요
포장빵
포장빵
IT공부 및 프로그래밍
  • 포장빵
    포장빵의 IT
    포장빵
  • 전체
    오늘
    어제
    • AI 학습 노트 (113)
      • 기초 수학 (4)
        • 선형대수 (0)
        • 확률통계 (4)
        • 미적분 (0)
        • 최적화 이론 (0)
      • AI & 딥러닝 (1)
        • 이론 (0)
        • 컴퓨터 비전 (0)
        • 자연어 처리 (0)
        • 생성AI (0)
        • 강화학습 (0)
      • 데이터과학 (70)
        • R (47)
        • ADSP (21)
      • 연구 & 자료 (15)
        • 논문 (6)
        • 수료증 (3)
      • 프로그래밍 & 개발 환경 (22)
        • Python (22)
        • 개발도구 (0)
        • 알고리즘 (0)
      • 면접 자료 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      매핑형(딕셔너리)
      확률 분포
      상관분석
      베르누이분포
      Python Regular Expression Quick Guide
      str lib
      k-means clustering
      논문
      k-평균 군집
      확률
      R 도수분포표
      시계열 모형
      Coursera Python Data Structures
      단순선형 회귀분석
      통계량에 의한 자료 분석
      yolov10
      R 원 그래프
      시퀀스형
      yolov9
      Coursera 1
      python 주요 데이터 타입
      다차원 척보법
      none타입
      R 원 그래프 퍼센트
      CV
      stylegan2
      지수분포
      자료의 종류
      Python 크롤링 기초
      주성분 분석(PCA)
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    포장빵
    Python 크롤링
    상단으로

    티스토리툴바