Requests
WEB CRAWLING 1
공부한 내용을 스스로 보기 쉽게 정리한 글입니다.
Requests
- Requests 패키지는 크롤링 하고자 하는 페이지를 url 값을 통해 가져와 객체로 변환 해주는 기능을 가지고 있다.
1. Installation
- Requests 를 이용하기 위해 package 를 설치해준다.
1
$ pip3 install requests
- request를 이용하면서, json 형식으로의 크롤링과, html 형식으로 css selecting 을 위한 크롤링을 실습해 볼 것이므로, BeautifulSoup Package 역시 같이 설치해준다. (BeautifulSoup은 html parser 를 이용해보기 위함이다.)
- python-forecastio 는 dark sky 의 api를 활용해 날씨 데이터를 받아올때 사용해보기 위해 설치한다.
1
2$ pip3 install bs4
$ pip3 install python-forecastio - import 할 것들
1
2
3
4import requests
import forecastio
from bs4 import BeautifulSoup
from pandas.io.json import json_normalize
2. [ jSON ] Dark Sky api 활용 날씨정보 가져오기
DarkSky api 는 위도와 경도를 입력하면, 날씨 정보를 주는 api 이다.
https://darsky.net/dev/ 에 가입 후, TOKEN 을 받는다.
위에서 받은 개인의 TOKEN 을 활용해 url 을 먼저, formating을 해준다.
requests의 get 메소드를 활용해 url 의 정보를 받아온다.
받아온 정보를 requests 의 json 메소드로 json 형식으로 변환해준다.
json 을 확인하고 원하는 정보를 return 해준다.
1
2
3
4
5def forecast(lat, lng):
url = "https://api.darksky.net/forecast/{}/{},{}".format(TOKEN, lat, lng)
response = requests.get(url)
json_obj = response.json()
return json_obj["hourly"]["summary"]
3. [ html ] BS4 활용 html selecting 해서 가져오기
- 네이버의 실시간 검색순위 부분의 text 를 크롤링 해보자
- html 파일을 BS4 를 활용해 받아온뒤, CSS selecting 으로 원하는 text data 를 가져온다.
1 | from bs4 import BeautifulSoup |
- print(response.content)의 모양을 보자.
- 따라서, BeautifulSoup 으로 html 형식으로 parsing 해주고, css 를 활용해 selecting 해준다.
- .select 는 여러개의 엘리먼트를 선택 -> 결과가 리스트
- .select_one은 하나의 엘리먼트를 선택 -> 결과가 하나의 객체