크롤링

request 라이브러리, BeautifulSoup 라이브러리

화이팅하자9 2023. 10. 19. 14:16

request 라이브러리

  • 접근할 웹 페이지의 데이터를 요청/응답 받기 위한 라이브러리
  • import requests as req  <- 라이브러리 선언하기 위해 만든것
  • 예시=req.get(url) <- 라이브러리를 이용해서 웹 페이지 요청
  • 예시.text  <- 웹 페이지 확인하기

HTTP상태코드 <- url

성공 : 200
클라이언트 오류 : 400
서버 오류 : 500

BeautifulSoup 라이브러리

  • 웹 페이지에서 원하는 데이터 추출하기 쉽게 Python 객체로 변환 해주는 라이브러리
  • from bs4 import BeautifulSoup as bs
  • bs(변환할 데이터,변환방식)<- 문자열로 된 웹 페이지 데이터를 객체로 변환
bs(변환할 데이터,변환방식)

변환할 데이터 : 응답받은 웹 페이지 데이터
변환 방식 : Python객체로 변환 lxml > html.parser > html5lib <-- 속도 측면에서 lxml이 젤 빠름

html = bs(res.text,'lxml')
html

 

주소를 불러올때 에러가 뜨는경우가 있을때

예시 = {
    'user-agent' : 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

예시1 = req.get(불러올 url변수,예시의이름을 정할 변수 = 예시)
예시1


naver_news_url='https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=103'

header_option = {
    'user-agent' : 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

res = req.get(naver_news_url,headers = header_option)
res

 

 

원하는 데이터 추출하기

1.select : 전체를 가져온다.
2.select_one : 원하는 데이터를 가져온다.

3.select_one(~).text : 선택자에 해당하는 하나의 요소의 내용을 반환하는 함수

4.select('title')[0].text : 선택자에 해당하는 모든 요소를 반환하는 함수