Crawling

Cheoly·2024년 1월 9일

Crawling

Requests

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에서 크롤링할 수 있다.

Selenium

셀레니움은 메크로로도 사용할 수 있는 좋은 도구이다. 크롬 창을 하나 생성하고 거기서 python 코드로 자동으로 동작 할 수 있게끔 조종할 수 있다. 메크로처럼 사용 할 수 있기에 자동화 도구로 사용된다.

Selenium과 Requests는 웹 데이터를 가져오는 데에 사용되는 두 가지 주요 도구입니다. 그러나 두 도구는 목적과 사용 시나리오에 따라 선택되어야 하는 차이점이 있습니다.

  1. JavaScript 렌더링:

    • Selenium은 웹 페이지 내의 JavaScript를 실행하고, 동적으로 렌더링되는 콘텐츠를 가져올 수 있습니다. 반면에 Requests는 JavaScript를 실행하지 않으며, 정적인 HTML만 가져옵니다. 만약 웹 페이지가 JavaScript를 통해 데이터를 로드하거나 변경한다면, Selenium이 더 나은 선택일 수 있습니다.
  2. 브라우저 시뮬레이션:

    • Selenium은 실제 웹 브라우저를 제어하여 사용자와 유사한 상호 작용을 시뮬레이션할 수 있습니다. 이는 로그인, 폼 작성, 클릭 등과 같은 사용자 행동을 자동화하는 데 유용합니다.
  3. 페이지 이동 및 대기:

    • Selenium은 특정 페이지로 이동하거나, 요소가 로드되기를 대기하는 등의 동작을 편리하게 수행할 수 있는 메서드들을 제공합니다. 이는 웹 페이지의 로딩이나 동적 콘텐츠 로딩을 기다릴 때 유용합니다.
  4. 웹 애플리케이션 테스트:

    • Selenium은 웹 애플리케이션의 테스트를 위해 설계되었습니다. 웹 페이지의 동작을 시뮬레이션하고 테스트하는 데 강력한 기능을 제공합니다.

그러나 속도 측면에서는 Requests가 보다 경량이며 빠릅니다. 만약 간단한 웹 페이지에서 데이터를 가져오거나, JavaScript를 사용하지 않는 경우라면 Requests가 더 빠를 수 있습니다. 선택은 사용하려는 시나리오, 요구 사항, 그리고 어떤 데이터를 얻으려는지에 따라 달라집니다.

profile
데이터 엔지니어

0개의 댓글