requests는 url주소, 필요하다면 payload와 header를 추가로 사용하여 웹사이트의 주소를 가져오는 방법이다.
url 주소와 payload를 가져오는 방법은 해당 crawling을 할 웹 페이지에 들어간 후 f12를 눌러 개발자 도구를 키고 네트워크 탭에서 요청되는 정보들 중에서 유효한 정보를 가져오면 된다.
header는 user-agent를 가져오면 된다.
payload와 header는 언제 가져오는 거고, 유효한 정보는 어디서 판단하는 건지는 아직 잘 모르겠다.
아래는 starbucks 크롤링 예시이다.
url_cd = "https://www.starbucks.co.kr/store/getSidoList.do"
url_place = "https://www.starbucks.co.kr/store/getStore.do?r=YKWS2U9PS5"
r = requests.post(url_cd)
total = []
for x in tqdm(r.json()['list']):
#print(x['sido_nm'], x['sido_cd'])
payload['p_sido_cd'] = x['sido_cd']
r = requests.post(url_place, data=payload)
total.append(pd.DataFrame(r.json()['list']))
starbuck_df = pd.concat(total)
krx_stock, cu, gs25에서 크롤링할 수 있다.
셀레니움은 메크로로도 사용할 수 있는 좋은 도구이다. 크롬 창을 하나 생성하고 거기서 python 코드로 자동으로 동작 할 수 있게끔 조종할 수 있다. 메크로처럼 사용 할 수 있기에 자동화 도구로 사용된다.
Selenium과 Requests는 웹 데이터를 가져오는 데에 사용되는 두 가지 주요 도구입니다. 그러나 두 도구는 목적과 사용 시나리오에 따라 선택되어야 하는 차이점이 있습니다.
JavaScript 렌더링:
브라우저 시뮬레이션:
페이지 이동 및 대기:
웹 애플리케이션 테스트:
그러나 속도 측면에서는 Requests가 보다 경량이며 빠릅니다. 만약 간단한 웹 페이지에서 데이터를 가져오거나, JavaScript를 사용하지 않는 경우라면 Requests가 더 빠를 수 있습니다. 선택은 사용하려는 시나리오, 요구 사항, 그리고 어떤 데이터를 얻으려는지에 따라 달라집니다.