Data scientist/PYTHON

Python_Crawling

맨사설 2021. 7. 30. 16:14
728x90

◎ HTTP 이해하기

  • Get 요청:데이터를 URL에 포함하여 전달(주로 리소스 요청에 사용)
  • Post 요청: 데이터를 Form data에 포함하여 전달(주로 로그인에 사용)

※ HTML (Hyper Text Markup Language) : 웹사이트를 생성하기 위한 언어로 문서와 문서가 링크로 연결되어 있고, 태그를 사용하는 언어

 

◎ Requests 모듈

  • http request/response를 위한 모듈
  • HTTP method를 메소드 명으로 사용하여 request 요청 예) get, post

⑴ get 요청하기

# get 요청의 기본 구조
import requests
url = 'https://news.v.daum.net/v/20190728165812603' # 원하는 사이트를 불러올 수 있다.
resp =requests.get(url) 
resp

resp.raise_for_status() # resp가 정상이면 실행이 되고 비정상이면 종료하는 언어

 

response가 2로 시작하면 코드 실행이 성공적이라는 의미

 

 

⑵ post 요청하기

# Post 요청의 기본 구조
url1 = 'https://www.kangcom.com/member/member_check.asp'
data = {
    'id' : '****', #자신의 아이디
    'pwd' : '*****' # 자신의 비밀번호
}
res = requests.post(url1,data=data)
res.text

 

⑶ Beautifulsoup 모듈 사용하기

from bs4 import BeautifulSoup # 라이브러리 불러오는 코드
############################3### html의 예시 #############
html = '''
<html>
  <head>
    <title>BeautifulSoup test</title>
  </head>
  <body>
    <div id='upper' class='test' custom='good'>
      <h3 title='Good Content Title'>Contents Title</h3>
      <p>Test contents</p>
    </div>
    <div id='lower' class='test' custom='nice'>
      <p>Test Test Test 1</p>
      <p>Test Test Test 2</p>
      <p>Test Test Test 3</p>
    </div>
  </body>
</html>'''
##########################################################
soup = BeautifulSoup(html) # BeautifulSoup 선언
soup.find("h3") # find 함수는 첫번째 태크를 찾아 반환
soup.find('div',custom='nice') # 원하는 값을 찾기 위해 주건을 주어 찾는다.
soup.find('div',class_='test') # class는 class_= 로 선언한다

attrs = {'id':'upper','class':'test'}
soup.find('div',attrs=attrs) # 여러 조건문일 때 사용

soup.find_all('div') # find_all은 조건에 맞는 모든 tag를 리스트로 반환

※ get_text 함수

  • tag안의 value를 추출
  • 부모tag의 경우, 모든 자식 tag의 value를 추출
tag = soup.find('h3')
tag.get_text() # value 값 추출
tag.get_text().strip() # 줄 바꿈 같은 부수적인 것 제거

 

get_text 와 strip 함수의 차이

 

※ attribute 값 추출하기

  • tag에 attribute 이름을 [ ]연산을 통해 추출 가능
  • 위의 html에서 <h3 title='Good Content Title'>Contents Title</h3> '<>'안에 있는 값 'Good Content Title'를 attribute라 하며 해당 값을 추출해 보겠습니다.
tag = soup.find('h3')
tag['title'] # attribute 값 추출

 

attribute 값 추출

 

※ 꿀 tip들

# 밑에 있는 형제 타입 불러오는 코드 
rank2 = rank1.next_sibling #안될 경우 밑에 코드 실행 
rank2 = rank1.next_sibling.next_sibling
rank3 = rank2.next_sibling.next_sibling
rank2 = rank1.find_next_sibling("동일 태그명") # method 2
rank2 = rank1.find_next_siblings("동일 태그명") # rank1 기분으로 모든 형제 출력

# 위에 있는 형제 타입 불러오는 코드
rank2 = rank1.previous_sibling.previous_sibling

# 부모 타입으로 가는 코드
rank1.parent

 

Actual_Practice를 통한 학습

 

728x90

'Data scientist > PYTHON' 카테고리의 다른 글

Python_Seaborn  (0) 2021.07.29
Python_Pandas  (0) 2021.07.28
Python_Numpy  (0) 2021.07.27
Python_데이터 입출력(IO)  (0) 2021.07.23
Python_function()  (0) 2021.07.22