Home

Gabriel's Blog

<맨 위로>

Requests & 뷰티풀수프 파싱 기초

개요

웹크롤링을 자주 하는 편이 아니지만, 그럼에도 이따금씩 필요한 일이 생긴다.

문제는 몇 개월에 한 번씩 하려다 보니 매번 강좌를 찾아보고 있다는 사실. 이쯤 되니 꼭 필요한 것만 모아 정리해두는 게 낫겠다 싶었다.

그런 이유로, 거두절미하고 바로 본론으로 들어가보자.


Requests

파이썬 내장 웹 통신 라이브러리인 urllib보다 10만 배 편하다. 그냥 이거 쓰자.

설치 명령어

pip install requests

불러오기

import requests

get 요청

url = 'https://www.google.com/'
res = requests.get(url)

쿼리스트링

# 방법 1
url = 'https://www.google.com/search?q=Gabriel+Dropout'
res = requests.get(url)

# 방법 2
url = 'https://www.google.com/search'
payload = {'q':'Gabriel+Dropout'}
res = requests.get(url, params=payload)

post 요청 + 헤더 + 쿠키

url = '사이트 주소'
data = {'key':'value'}
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64)'}
cookies = {'session_id':'1q2w3e4r'}
res = requests.post(url, data, headers=headers, cookies=cookies)

세션 유지

url = '사이트 주소'
s = requests.Session()  # 세션 생성

res = s.get(url)
cookies = res.cookies  # 쿠키 저장
data = {'key':'value'}

res = requests.post(url, data, headers=headers, cookies=cookies)  # 쿠키 재전송

s.close()

응답 정보

res.request  # 리퀘스트 정보
res.headers  # 헤더 정보
res.status_code  # 상태 코드
res.text  # html데이터를 문자열로 반환
res.json()  # json데이터를 딕셔너리로 바로 로드

BeautifulSoup

보다 자세한 정보는 다음 링크를 참조하자.

공식 레퍼런스

설치 명령어

pip install beautifulsoup4

불러오기

from bs4 import BeautifulSoup

파싱

soup = BeautifulSoup(res.text, 'html.parser')

조건을 만족하는 첫 번째 element

soup.find('a')
soup.find('ul', id='link3', class_='clearfix')
soup.find('a', href='www.blabla.com/')
soup.a  # 축약형

조건을 만족하는 모든 element

soup.find_all('a')
soup.find_all(id=True)  # id 속성을 가진 element
soup.find_all(attrs={"data": "value"})  # 딕셔너리 형태로 넘기기
soup('a')  # 축약형

직계 자손 반환

tag.find_all(revursive=False)  # 오직 태그만 리스트로 반환
tag.contents  # 리스트로 반환(태그가 아닌 NavigableString 객체 등이 함께 있을 수도 있다)
tag.children  # 반복자로 반환

부모 반환

tag.parent

형제 반환

tag.next_sibling
tag.previous_sibling

태그 정보 반환

tag.name
tag['class']
tag['id']
tag.name

여담

추가하거나 수정 사항이 있을 수도 있겠다.

다음부터는 저것들 때문에 google 위를 떠돌아 다니지 않아도…되겠지?

그럼 다음에,
Gabriel-Dropout at 04:55

scribble