23.06.26 Python 크롤링(1)
지난주부터 크롤링 공부시작
크롤링은 다양한 정보자원을 자동화된 방법으로 수집해서 분류 및 저장하는 것을 의미한다.
즉, 이것을 공부하면 웹에서 데이터를 수집할 수 있다.
라이브러리 1. requests
: 서버에게 데이터를 요청 및 응답받기 위한 라이브러리
- .get(' URL주소값 ') -> 요청, 응답의 결과를 알려줌
ㄴ> # Response [200] : 성공적으로 요청 및 응답을 받았다는 의미
ㄴ> # Response [400] : 클라이언트(요청) 부분에서 오류가 발생했을 때
ㄴ> # Response [500] : 서버(응답) 부분에서 오류가 발생했을 때
import requests as req
res=req.get('https://www.naver.com/')
res.text
- .text -> 변수의 텍스트를 보여준다.
ㄴ> 텍스트 추출은 했지만 컴퓨터도 사람도 알아보기 힘들다
라이브러리 2. BeautifulSoup
: 컴퓨터가 이해할 수 있는 객체로 변경해주는 라이브러리
from bs4 import BeautifulSoup as bs
soup=bs(res.text,'lxml')
soup
- .bs(parsing할 html문서,'parsing할 방법')
ㄴ>사용방법은 지정한 이름에 parsing할 문서, parsing할 방법을 입력한다
ㄴ>lxml : 빠르고 광대한 parsing 방법
ㄴ> 거의 비슷하지만
바깥에 '(작은따옴표)가 없고
첫 머리말이 개행 되었다.
(아마 컴퓨터는 차이를 크게 인식하지 않을까 싶다)
- .select(' html태그 선택자 ')
ㄴ> 여러가지 요소를 복수형(list)으로 가져와준다.
ㄴ> 태그위치 찾는 방법 :
1) 내가 가져오고 싶은 contents 위에 마우스 올려놓고 우클릭 -> 검사
2) 개발자모드(F12) 상단에 커서 모양 아이콘 클릭후 가져오고 싶은 컨텐츠 클릭
ㄴ> 선택자 :
1) 기본 선택자
- 전체 선택자 (*): 모든 요소를 선택합니다.
- 유형 선택자 (elementname): 주어진 노드 이름을 가진 모든 요소를 선택
- 클래스 선택자 (.classname): 주어진 클래스 속성을 가진 모든 요소를 선택
- ID 선택자 (#idname): 주어진 ID 속성을 가진 요소를 선택
- 속성 선택자 ([attr]): 주어진 속성을 가진 모든 요소를 선택
2) 조합기
- 후손 조합기 (A B): 첫 번째 요소의 후손인 모든 노드를 선택
- 자식 조합기 (A > B): 첫 번째 요소의 직접 자식인 모든 노드를 선택
- 일반 형제 조합기 (A ~ B): 첫 번째 요소 다음에 나오는 모든 형제 노드를 선택
- 인접 형제 조합기 (A + B): 첫 번째 요소 바로 다음에 나오는 형제 노드를 선택
soup2.select('a.tab')
- .select_one(' html태그 선택자 ')
ㄴ>여러가지 요소 중에서 첫번째 요소만 단수형으로 가져와준다.
-.text
ㄴ> 여는 태그와 닫는 태그 사이에 있는 contents를 가져오는 명령어
ㄴ> 위의 text와 같은 함수인지 아니면 라이브러리 고유의 함수인지는 모르겠으나 결과값이 확실히 달라진다.