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
다음 스크랩에서 계속....
'capstone design : Web Crawling' 카테고리의 다른 글
python 동작 원리 알아보기 (1) | 2022.10.05 |
---|---|
캡스톤 과제 관련 2주차 정리 (0) | 2022.10.05 |
web crawling 처음으로 돌아가보기 (1) | 2022.10.05 |