Lang/Python

23.06.26 Python 크롤링(1)

quantumee 2023. 6. 26. 23:04

지난주부터 크롤링 공부시작

크롤링은 다양한 정보자원을 자동화된 방법으로 수집해서 분류 및 저장하는 것을 의미한다.

즉, 이것을 공부하면 웹에서 데이터를 수집할 수 있다.

 

라이브러리 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 결과값

 

 

- .select_one(' html태그 선택자 ')

    ㄴ>여러가지 요소 중에서 첫번째 요소만 단수형으로 가져와준다.

 

select_one 결과값

-.text

    ㄴ> 여는 태그와 닫는 태그 사이에 있는 contents를 가져오는 명령어

text 코드 및 결과값

ㄴ> 위의 text와 같은 함수인지 아니면 라이브러리 고유의 함수인지는 모르겠으나 결과값이 확실히 달라진다.