크롤링

[크롤링]1. 크롤링 기초

CodeJaram 2023. 6. 26. 08:09

1. 크롤링: Web상에 존재하는 Contents를 수집하는 일련의 과정

2. 크롤링 라이브러리

  1)requests 라이브러리

      -접근할 웹페이지의 데이터를 요청 및 응답받기 위한 라이브러리

  • 라이브러리 불러오기
  • 요청하기: req.get('요청할 주소')
  • 응답의 종류

    -Response [200]번대: 성공적으로 요청 및 응답을 받음

    -Response [400]번대: 클라이언트(요청) 측에서 오류 발생

    -Response [500]번대: 서버(응답) 측에서 오류 발생

 

  • 페이지 html 문서만 추출: res.text(String 타입)

 

 2)beautifulsoup 라이브러리: 복잡한 html문서(tag soup)를 컴퓨터가 이해할 수 있는

객체로 변경해주는 라이브러리

  • 라이브러리 불러오기
  • request 라이브러리로 추출한 페이지 html 문서 객체화 

       -bs.(가공할 html 문서, '가공방법')

       -lxml: 빠르고 관대한 parsing(가공) 방법

 

 

[실습1]네이버 검색페이지에서 ‘메뉴’ 크롤링하기

 

1. 페이지 요청하기: req.get('요청할 주소')

2. 페이지 html 문서 가져오기: 요청한 변수명.text 예)res2.text

 

3. html 문서 객체화: bs(html 문서, ‘가공방법’) 예)soup2=bs(res2.text, ‘lxml;)

 

4. html 문서 중 원하는 요소만 추출하기: 태그 찾기-태그 불러오기

 1)원하는 요소의 태그 찾기

    -방법1.가져오고 싶은 contents 선택-우측 마우스-검사

 

 

-방법2. 개발자 도구에서 커서모양 아이콘 클릭하고 원하는 contents 클릭하기

 

 

 2)태그 불러오기: select(‘태그명’)

  • select: 여러 요소를 복수형(list타입)으로 가져옴

    -사용방법: 객체화 변수명.select('태그명')

    -태그명만 입력할 경우 해당 태그 전부를 불러옴 예) soup2.select('a')

    -특정 태그만 가져오고 싶으면 class 선택자 활용 예)soup2.select('a.tab')

 

  • select_one: 여러 요소 중 맨 위에 있는 요소만 단수형으로 가져옴

       -사용방법: 객체화 변수명.select_one('태그명')

 

 3)특정 태그만 불러오기: class 선택자 활용하여 태그 불러온 후 인덱싱

      -사용방법: 객체화 변수명.select('태그명.class명')[인덱스 번호]

           예)naver_img=soup2.select('a.tab')[2]

 

 4)태그 중 contents만 불러오기: 태그 인덱싱.text 예)naver_img.text

 

 

[실습2]날씨 검색 후 현재 온도 데이터 수집

 

1. 페이지 정보 불러오기

url='https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=

0&ie=utf8&query=%EB%82%A0%EC%94%A8'

naver=req.get(url)

 

2. html 문서 객체화

naver.text

tag=bs(naver.text, 'lxml')

 

3. 원하는 태그 선택하기

weather=tag.select('div.temperature_text')[0]

 

4. contents 출력

weather.text 또는

weather[0].text 인덱싱을 출력 시 해도 됨

'크롤링' 카테고리의 다른 글

[크롤링]5. 이미지 데이터 수집  (0) 2023.07.04
[크롤링]4. selenium 실습  (0) 2023.06.29
[크롤링]3. selenium 라이브러리  (0) 2023.06.28
[크롤링]2. 크롤링 실습  (0) 2023.06.27