웹사이트 새로고침해야 나오는 정보를 파이썬으로 크롤링 할 수 있는 방법 질문

조회수 1649회

안녕하세요.

Wine List의 가격이 해외 가격과 적정한지 비교하는 코드를 짜보고 있습니다. 해외 가격을 알아보는 사이트로 Wine Searcher라는 사이트를 이용하는데, 문제가 있어서 문의 드립니다.

URL 조합을 이용하여 와인을 검색할 수 있는데, 희한하게 처음 URL을 입력하면 평균 가격이 나오지 않고, 똑같은 상태로 새로고침이나 같은 URL을 다시 입력하면 평균 가격이 표시가 됩니다.

https://www.wine-searcher.com/find/p%C3%AAra+manca+tinto?Xcurrencycode=EUR&Xtax_mode=e&Xsavecurrency=Y

이미지

처음에는 위 그림처럼 와인 정보에 평균 가격이 없다가,

이미지

새로고침이나 같은 URL을 다시 입력하면 위 그림처럼 평균 가격이 표시가 됩니다.

제가 필요한 값은 평균 가격인데, 저 값을 한번에 얻을 수가 없네요.

Requests로 코드를 짜는데 해결 방법이 없을까요?

Selenium으로 해볼까 생각도 했는데, 저 사이트에서 Selenium으로 접근시 바로 Captcha를 띄워버려서 힘들 것 같습니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    from msedge.selenium_tools import EdgeOptions
    from msedge.selenium_tools import Edge
    from time import sleep
    
    options = EdgeOptions()
    options.use_chromium = True
    # options.add_argument('headless')
    # options.add_argument('disable-gpu')
    # options.add_argument("--log-level=OFF")
    options.add_argument('--ignore-ssl-errors=yes')
    options.add_argument('--ignore-certificate-errors')
    driver = Edge(executable_path='C:/edgedriver_win64/msedgedriver.exe', options=options)
    
    url = "https://www.wine-searcher.com/find/pêra+manca+tinto?Xcurrencycode=EUR&Xtax_mode=e&Xsavecurrency=Y"
    driver.get(url)
    driver.refresh()
    
    sleep(10) driver.close()
    

    밑에 ignore 어쩌구는 비공개 연결이 아닙니다 라는 경고가 자꾸 떠서 넣은 옵션이고, 이게 안 뜨면 굳이 안 넣으셔도 됩니다. 주석 처리된 부분은 셀레늄에서 웹드라이버를 켰을 때 창이 켜졌다 꺼졌다 하는걸 방지하고 아예 백그라운드에서 돌도록 만드는 부분입니다. 제가 엣지 브라우저를 써서 엣지에 맞게 짜여 있는걸 복붙한 것이고 파이어폭스나 크롬을 쓰시면 따로 코드를 찾아보셔야 할 듯 합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 바꿔봐도 가격이 보이지 않네요. 아마도 쿠키가 있어야지 가격이 보이는 것 같습니다. 쿠키 다 지우고 접속해보면 Savecurrency를 Y나 N으로 해도 가격이 보이지 않네요. 바바밥 2021.2.11 23:07
    • 아 Y랑 N은 통화 표시를 어떻게 할 건지를 제어하는 것이네요.. requests는 애초에 서로 다른 요청으로 분류되서 새로고침이 필요한 류의 크롤링은 불가할 듯 합니다. 직접 셀레늄으로 시도해 봤는데 저는 captcha 없이 잘 들어가지네요. 알 수 없는 사용자 2021.2.13 21:59
    • 제가 코딩 초보라 답변 주신 내용을 바로 이해하진 못하지만, 알려주신 내용 스터디 해서 적용해 보도록 하겠습니다. 감사합니다. 바바밥 2021.2.15 01:50

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)