본문 바로가기
capstone design : Web Crawling

01. web crawling(inflearn 강의)

by 나영수 2022. 9. 26.

0. 웹 크롤링전에 알아야 할 점?

-크롤링 왜 쓰냐?
  -> 남들의 시간을 절약시켜 줄 수 있다.

- 남의 사이트의 허락을 받지않고 크롤링 하는 것이므로 남의 사이트에 무리가 가지 않도록 해야한다.

(대상 서버의 traffic 초과 문제가 생길 수 있기 때문이다.)

- 로봇 배제 표준(robots.txt)에 기술된 것을 지켜야 한다.
  -> 사이트 url뒤에  robots.txt를 더해서 허락하는 범위를 확인한다.


- 웹의 동작 방식을 기본적으로 알아야 한다.(클라이언트 서버)
   -> HTTP 통신규약을 지키면서 요청과 응답이 이루어지는 것이 웹 동작의 기본이다.

- 프론트의 기본 문법에 대해 대략 알아야 한다.(HTML, CSS, JAVASCRIPT 구조)
  (크롤링을 하기 위해서는 대략적인 구조를 알아야 하기 때문이다.)

- 개발자 도구의 사용법을 알아야 한다.
  (사이트 내에서 F12를 누를시 오른쪽 사이드에 사이트의 HTML 구조나 NETWORK동작등을 알 수 있다.)

 


1. 크롤링전에 필요한 것들(Infearn 웹 크롤링 강의 참조)

- python 설치
- editor 아무거나 설치(vscode, intellij, eclipse등...)

2. Request

- HTTP통신을 위한 파이썬 라이브러리
(GET, POST 요청) -> 서버와 내가 소통하는 과정
- 외부라이브러리 이기 때문에 설치해줘야 한다.

-> 나같은 경우는 module 오류때문에 많은 고생을 했다.....
-> 다시 지우고 c 드라이브의 appdata안의 경로로 설정해주니 오류가 해결되었다.

pip install requests 후에
python 실행하기를 실행해야한다. (그냥 실행하면 done만 뜬다)


3. beautifulsoup

-html 분석을 위한 파이썬 라이브러리(html 번역)
->html코드가 문자열이기 때문에 파싱하기가 어렵기 때문에 beautifulsoup를 사용한다.

****파싱이란? (parsing)
구문분석이라고 하는데 데이터를 분해 분석하여 원하는 형태로 조립하고 다시 빼내는 프로그램을 말한다. 즉 웹에서 주어진 정보를 내가 원하는 형태로 가공하여 서버에서 불러들이는 것이다.(런타임환경이 실제로 실행할 수 있는 형태로 가공하는 것을 의미한다.) 
파싱은 XML parsing과 JSON parsing이 있다.
Parser는 원시 프로그램을 읽어 들여 그 문장이 구조를 알아내는 parsing을 행하여 주는 프로그램이다.

- beautifulsoup로 원하는 태그를 선택할 수 있다.

4. CSS 선택자

-디자인을 변경할 HTML 태그를 선택하는 것(크롤링할 HTML태그를 선택)

-종류: 
1. 태그 선택자
2. id 선택자(#)
3. class 선택자(.) 
4. 자식 선택자(내가 원하는 태그에 속성명이 없을 때 사용) -> 부모 클래스를 이용해서 태그를 선택한다 (>)

5. URL
-인터넷 주소 형식(protocol , domain, path, parameter[key, value,query=>검색 값])

6. pyautogui
- 마우스, 키보드 매크로 라이브러리
- 간단한 alert창 뜸
-> pyautogui의 prompt 형태로 가져오게 되면 문자열이 반환된다.

7. 여러 페이지 결과 가져오기

- 네이버 뉴스 url의 경우 start가 10씩 늘어나는 것을 알 수 있다.
- > for i in range(시작, 끝, term):  이런 식으로 반복문을 적용

***원래 type 변환시에 (int)변수 이런 형식으로 했던 것 같은데 python에서는 int(변수)형식으로 type변환을 한다.

****f를 사용하면 { 변수 }를 사용하여 합치기가 가능하다(+대신 많이 사용)
****r를 사용하면 '경로'와 같은 뒤의 문자를 문자형태로 취급하도록 한다.


8. openpyxl(파이썬에서 excel을 사용하도록)

- 공식문서를 통해 다양한 사용법이 있다.

 

코드 참고 깃허브  : https://github.com/0su1327/Crawling_Practice

 

다음 스크랩에서 계속....