webcrawling

python의 request 모듈을 사용하여 http request/resopnse 확인하기

requests 모듈

  1. http request/response를 위한 모듈
  2. HTTP method를 메소드 명으로 사용하여 request 요청 예) get, post
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import requests
# get 방식
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)
resp.text

# post 방식
url = 'https://www.kangcom.com/member/member_check.asp'
data = {
'id': 'testid',
'pwd': 'password'
}

resp = requests.post(url, data=data)
resp.text

HTTP header 데이터 이용하기

  1. header 데이터 구성하기
  2. header 데이터 전달하기
1
2
3
4
5
6
7
url = 'https://news.v.daum.net/v/20190728165812603'
headers = {
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
}

resp = requests.get(url, headers=headers)
resp.text

HTTP response 처리하기

  1. response 객체의 이해
  2. status_code 확인하기
  3. text 속성 확인하기
1
2
3
4
5
6
url = 'https://news.v.daum.net/v/20190728165812603'
resp = requests.get(url)
if resp.status_code == 200:
resp.headers
else:
print('error')

BeautifulSoup의 find와 find_all 함수

  1. find 함수
    • 조건에 만족하는 하나의 tag만 검색
    • 특정 html tag를 검색
    • 검색 조건을 명시하여 찾고자하는 tag를 검색
1
2
3
4
5
6
7
8
tag = soup.find('h3')
tag.get_text()

tag = soup.find('p')
tag.get_text()

tag = soup.find('div', id='upper')
tag.get_text().strip()
  1. find_all함수

    • 조건에 맞는 모든 tag를 리스트로 반환합니다.
  2. get_text 함수

    • tag안의 value를 추출
    • 부모tag의 경우, 모든 자식 tag의 value를 추출
  3. attribute 값 추출하기

    • 경우에 따라 추출하고자 하는 값이 attribute에도 존재함
    • 이 경우에는 검색한 tag에 attribute 이름을 [ ]연산을 통해 추출가능
    • 예) div.find(‘h3’)[‘title’]
1
2
tag = soup.find('h3')
tag['title']

CSS의 select_one과 select 함수

  • CSS를 이용하여 tag 찾기
    • select, select_one함수 사용
    • css selector 사용법
      • 태그명 찾기 tag
      • 자손 태그 찾기 - 자손 관계 (tag tag)
      • 자식 태그 찾기 - 다이렉트 자식 관계 (tag > tag)
      • 아이디 찾기 #id
      • 클래스 찾기 .class
      • 속성값 찾기 [name=’test’]
        • 속성값 prefix 찾기 [name ^=’test’]
        • 속성값 suffix 찾기 [name $=’test’]
        • 속성값 substring 찾기 [name *=’test]
      • n번째 자식 tag 찾기 :nth-child(n)
You need to set install_url to use ShareThis. Please set it in _config.yml.

Comments