오답노트
[requests] 동적 페이지와 동적 페이지에 대한 웹 크롤링 본문
동적 페이지
동적 페이지는 요즘 많이 쓰고있는 반응형 웹이 동적 페이지이다. 사용자가 버튼을 클릭하거나 상호작용, 이벤트가 발생해도 URL이 바뀌지 않고 바로 페이지 내에서 결과가 나타난다.
동적 페이지 웹 크롤링
웹 크롤링은 크게 동적 페이지에 대해서 또는 정적 페이지에 대해서 수행할 수 있다.
하지만 이 둘의 웹 크롤링 방법은 상당히 다르다.
동적페이지는 보통 json 형식으로 데이터를 크롤링할 수 있다.
리그 오브 레전드 전적 조회 사이트인 op.gg 에서 챔피언 목록을 웹 크롤링 실습을 통해 동적 페이지 웹 크롤링을 알아보자.
1. op.gg 챔피언 분석 탭 에 접속한다.
2. F12를 눌러 개발자 툴을 키고 가장 상위 탭 중에서 Network를 클릭한다. 그리고 바로 아래 탭에서 Fetch/XHR 탭을 클릭한다.
3. F5(새로고침)을 눌러 페이지를 갱신하면 아래 op.gg에 요청에 대한 응답 결과들이 표시된다. 그중에서 champions... 를 찾아 클릭한다.
4. 옆에 탭에서 우선 Headers 를 살펴보자. 이 Headers는 요청과 응답에 대한 Headers의 내용을 표시한다. 이 중에 General -> Request URL, Request Headers -> referer, user-agent를 사용한다.
Request URL은 리그 오브 레전드 챔피언 목록을 요청하기 위한 URL이다.
Request Headers 의 referer은 Request URL을 요청한 URL이다.
Request Headers 의 user-agent은 Request URL을 요청한 브라우저이다.
Request Headers 없이도 Request URL에 요청해서 응답을 받을 순 있지만, 응답을 받을 수 없다면 꼭 Request Headers를 추가하자.
5. 이제 파이썬 코드를 통해 Request Headers을 포함해 Request URL에 요청해보자
requests 패키지 설명은 링크를 참고하자.
import requests
headers = {
"referer": "https://www.op.gg/champions",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}
response = requests.get(url,headers = headers)
response.json()['data']
'''
[{'id': 1,
'key': 'Annie',
'name': '애니',
'image_url': 'https://opgg-static.akamaized.net/images/lol/champion/Annie.png',
...
'''
'Python > Web Crawling' 카테고리의 다른 글
[selenium] 정적 페이지와 정적 페이지 웹 크롤링 (0) | 2022.08.05 |
---|---|
[selenium] selenium 간단 사용법 (0) | 2022.08.05 |
[BeautifulSoup] 정적 페이지와 정적 페이지 웹 크롤링 (0) | 2022.08.05 |
[CSS] CSS Selector (0) | 2022.08.05 |
[requests] Python requests 패키지 설명과 GET, POST (0) | 2022.08.05 |