본문 바로가기

공부하는 날

[학습노트][인프런] 데이터과학과 IT영역에서의 파이썬과 크롤링 큰 그림 이해하기


※ 학습 노트

학습 사이트 

 인프런

과정 제목

 파이썬입문과 크롤링기초 부트캠프 (2020 업데이트) [쉽게! 견고한 자료까지!] 

학습 시간

 72강/941분

의견

 - 크롤링이 뜻대로 되지 않는 부분에 대한 팁을 얻기 위해 등록한 과정이기 때문에 

   스파르타 코딩 클럽에서 배운 것과 겹치는 부분은 스킵하고 필요한 부분부터 우선적으로 듣기로 함

 - 개념적인 것을 엄청 자세하게 설명해서 초보자(나)에게 좋음. 기존에 배운 것 복습 + 빈 곳을 채우는 느낌

 - 10~20분 단위로 micro하게 구성

 학습 모듈

 강의 준비

 파이썬과 프로그래밍 기초를 견고하게 쌓는 가장 좋은 방법 - skip

 파이썬 객체와 라이브러리 - skip

 크롤링과 웹 기본 



강의준비_데이터과학과 IT 영역에서의 파이썬과 크롤링 큰그림 이해하기

* 영역: 웹, 앱, 응용 프로그램, IoT, 인공지능

* 단계: 데이터 수집 - 저장 - 분석 - Visualization - 서비스 개발



강의준비_프로그래밍 언어 기초와 파이썬 이해

* 프로그래밍 언어: 인간이 컴퓨터와 소통할 수 있도록 컴퓨터가 이해할 수 있는 명령으로 프로그램을 작성할 수 있도록 만든 언어

  - 컴퓨터는 기계어 (0과 1로 된 이진수 형태로 CPU가 이해할 수 있는 코드)만 이해한다



강의준비_anaconda와 jupyter notebook 소개와 설치

* 아나콘다(anaconda) 확장 기능 + 컴파일러 프로그램까지 한 번에 설치할 수 있는 프로그램

  - 파이썬 기본(컴파일러), 주요라이버리, 주요툴(jupyter notebook포함)을 모아놓은 패키지

  - 컴파일러 고급 언어로 작성된 코드를 기계어로 변환하는 프로그램



크롤링과 웹 기본_패턴으로 실습하며 익히기: 크롤링 코드 패턴으로 이해하기

  #라이브러리 임포트

 import requests

 from bs4 import BeautifulSoup

 #웹페이지 가져오기

 res = requests.get('사이트주소')

 #웹페이지 파싱하기

 soup = BeautifulSoup(res.content, 'html.parser')

 #필요한 데이터 추출하기 

 mydata = soup.find('title')

 #추출데이터 활용하기

 print(mydata.get_text()) 


* 웹기본구조

- 네트워크를 통해 내 컴퓨터와 다른 컴퓨터를 연결하고 정보를 주고 받을 수 있음

- 어떤 컴퓨터에서 정보를 받아올지 지칭하는 주소가 IP주소

- IP 주소를 이름으로 표기한 것이 웹주소 

- 주소를 넣으면 html로 구성된 파일을 달라고 요청하고 html은 해당 정보를 웹브라우저 안에서 보여줌


* 파싱 문자열의 의미를 분석하는 것


* 데이터 추출

soup.find('html코드')

변수.get_text




HTML


크롤링과 웹 기본_크롤링을 위한 지식: 웹구조와 HTML 이해하기

* 웹페이지는 HTML, CSS, javascript로 표현

* HTML

   - HTML은 마크업 언어: 문서나 데이터의 구조를 표현하는 언어

   - HTML 언어 : 웹페이지를 만드는 언어

   - 꺽쇠 <>와 tab로 표현

* Sublime Text 3 프로그램: HTML 에디터


*HTML 기본구조

<!DOCTYPE html> 이 문서는 HTML 언어를 사용

 <html> 여기서부터 HTML 문서 시작

 <head> 문서 전체 정보 (제목 등)

 </head>

 <body> 실제 웹페이지 표현되는 내용

 </b> enter

 </body> 

 </html>


  <head>

 <title> 제목 </title> 웹페이지의 타이틀이라 본문에 표시되지 않지만 탭에서 확인 가능

 <meta charset="utf-8"> 글씨가 깨질 때 추가 

 </head>


*태그 속성

<태그 속성(속성 이름, 속성 값) 속성 속성>

- 속성과 속성 사이는 한 칸씩 띄어야함


*구조화된 태그 (테이블)

  <table border="1">

   <thead> 한 테이블의 타이틀(표 머리글)

      <tr>

          <th>1*1</th>

      <tr>

   </thead>

   <tbody> 본문 내용

      <tr>

          <td>1*1</td> 

      <tr>

  </tbody> 

 </table>



크롤링과 웹 기본_패턴으로 실습하며 익히기: HTML 이해를 바탕으로 크롤링하기

*속성을 가져오는 방법

soup.find('태그')

 

#예시

 data =soup.find('p', class_='cssstyle') #클래스가 cssstyle을 가져오는 것

 data =soup.find('p', attrs={class':'cssstyle') #속성과 속성값을 그대로 기입 / 속성 여러 개 나열 가능

 data =soup.find('p', 'cssstyle')

 data =soup.find('p', id='body') 


 datas =soup.find_all #전체 다 찾아주나 리스트 형태로 보여주기 때문에 for 구문써줘야함

 for find_data in find_datas:

      print (find_data.get_text())


* 크롤링에서 가장 많이 쓰는 속성은 class이고 css 언어와 관련


CSS


크롤링과 웹 기본_크롤링을 위한 지식: 웹구조와 CSS  이해하기

* HTML로 웹페이지 구조(내용)을 표현하고 CSS언어를 활용하여 디자인하는 것이 일반적

* CSS 언어 적용 방법 

  1) 적용할 태그에 style 속성으로 넣기

  2) HTML문서 <head>안에 <style>태그로 넣기

  3) HTML문서 <head>안에 CSS파일 링크하기

* css언어는 프로퍼티와 프로퍼티 값으로 이루어짐. 

* 프로퍼티 정의는 구글 검색하여 css tutorial 활용


* 적용 방법 별 예시

  1) 적용할 태그에 style 속성으로 넣기

<td style ="text-align:center; color:blue">

세미콜론으로 구분해서 프로퍼티와 값을 연속으로 사용 가능. 띄어쓰기 해도 되고 안해도 됨


  2) HTML문서 <head>안에 <style>태그로 넣기

<style type="text/css">

td{

    font-size: 2em; 화면에서 디폴트로 보여주는 폰트의 2배

    font-family: Gulim;

    text-align: center;

}

</style>


 3) HTML문서 <head>안에 CSS파일 링크하기  매 페이지마다 head를 쓸 필요 없이 css 파일을 만들어놓고 페이지에 링크 가능

통상 css라는 확장자를 사용하여 파일 저장

#특정 태그에 css 설정 적용할 때

<link rel="stylesheet" type="text/css" href="css/style.css"> css파일이 들어있는 폴더와 파일명 


#.이름을 써서 별도의 css를 설정하여 내가 원하는 곳에 적용하려고 할 때

#.highlight는 내가 설정한 이름이며, class라고 부름 

.highlight {

 font-size:3em; 

 text-align:right;

 color: blue;

 }


<td class="highlight"> #설정한 css를 사용하고 싶은 곳의 태그 안에 class로 표시

<td class=highlight> 


반응형