• 목록
  • 아래로
  • 위로

안녕하세요?


롯데백화점 사이트를 크롤링 연습하다가 3일 동안 해결하지 못하여 부득이 여쭤봅니다 ㅠㅠ


신세계는 상대적으로 간단하던데 롯데는 제 수준에서 매우 어렵네요 ㅜㅜ



https://www.lotteshopping.com/benefitAndEvent/shoppingNewsSub


여기로 접속하면 기본적으로 '롯데백화점 본점'으로 연결되는데요.



'본점'을 클릭해서 '프리미엄 아울렛' -> '광명점'을 클릭합니다.


그러면 개발자도구의 네트워크 탭의 XHR 중에서 의심스러운(?) 내역을 확인할 수 있습니다.





브라우저를 최대한 모방하기 위해 request_html로 세션을 유지한 상태에서 shoppingNewsSub로 get 요청을 한 후,


getChannelImageListAjax로 post 요청을 하여 폼을 전송하는 함수를 작성하였습니다.



from requests_html import HTMLSession
from bs4 import BeautifulSoup

def parse():
    s = HTMLSession()
    s.get('https://www.lotteshopping.com/benefitAndEvent/shoppingNewsSub')
    gm = {
        'cstrLrclsCd' : 'C00130',
        'cstrMdclsCd' : 'C00131'
    }
    html = s.post('https://www.lotteshopping.com/getChannelImageListAjax', data=gm)
    #soup = BeautifulSoup(html.content, 'html.parser')
    print(html)



그런데 shoppingNewsSub로의 요청에 대해서는 200 응답 코드가 나오는데, getChannelImageListAjax로의 요청에 대해서는 404 에러가 뜨는군요 ㅠㅠ


{"resultCode":"0000","channelImageList":[{"mgmChnlLrclsCd":null,"mgmChnlMdclsCd":null,"mgmMenuCd":null,"mgmTpCd":null,"expsrSequ":null,"dsplyStDt":null,"dsplyEndDt":null,"imgNm":"1115_세일_프리아울렛_혜택이벤트","imgExpl":"1115_세일_프리아울렛_혜택이벤트","imgPath":"/content/bnr/201911/C00130C00131C07903C0800110/","imgFle":"20191119172408601_6.jpg","bkgrndPath":null,"bkgrndFle":null,"urlUseYn":null,"urlPopupYn":"N","cnntUrl":null,"rgstOrgCd":null,"rgstDptNm":null,"rgstDtm":null,"rgprId":null,"mdfDtm":null,"mdfprId":null}],"resultMsg":"OK, 전송 성공"}


정상적이라면 이런 응답을 얻는 것으로 나오는데 말이죠.



requests_html은 기본적으로 mocked user-agent 등을 사용하여 브라우저처럼 인식되도록 한다고 알고 있는데요.


user-agent와 세션의 문제가 아니라면... 리퍼러 등을 의심해야 할텐데


제 나름대로 부족한 수준에서 리퍼러를 건드려봐도 이 사이트는 어렵네요 ㅜㅜ



이 정도로 어려운 수준을 극복해야 뭔가 한 단계 업그레이드가 될텐데 아직은 많이 부족한 것 같습니다.


이런 딴 짓을 하지 말고 다음주 COS 준비를 해야될텐데 말이죠.


고수님들의 조언을 부탁드립니다!


번번이 감사합니다 ^-^


작성자
이니스프리 119 Lv. (0%) 1973550/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 2

title: 황금 서버 (30일)humit
profile image
+1

header에 Accept를 명시해주어야 동작하네요.

 

requests.post('https://www.lotteshopping.com/getChannelImageListAjax', {'cstrLrclsCd':'C00130', 'cstrMdclsCd':'C00131'}, headers={'Accept':'application/json, text/javascript, */*; q=0.01'}).content.decode('utf-8')

 

크롤링 시 팁을 드리자면, 저렇게 의심가는 요청을 찾은 다음에 저기에 나와 있는 헤더를 모두 포함해 요청을 보냅니다. 그리고 한 개씩 빼가면서 어떤 것이 있어야만 통과하는지 확인하는 방식으로 구현하시면 됩니다.

 

보통 이 과정을 할 때는 파이썬 코드를 짜지 않고 REST API를 테스트를 할 수 있도록 만들어진 프로그램을 사용합니다. 저의 경우에는 Postman (https://www.getpostman.com/)을 사용하고 있습니다. 참고로 Insomnia (https://insomnia.rest/)라는 비슷한 프로그램도 있습니다.

 

두 프로그램 모두 electron으로 구현이 되어 있습니다.

comment menu
2019.12.04. 23:50

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → humit
profile image

앗 밤늦게 답변 달아주셔서 감사합니다~!

우선 header를 모두 포함해서 요청을 보내고나서, 하나씩 빼면서 시도하면 되는 것이군요.

그런 생각을 미처 못했네요 ㅠㅠ

제가 Accept와 관련된 부분을 저번에도 빼먹었던 것 같은데, 앞으로는 일단 헤더를 모두 포함해서 요청을 보내야겠네요.

 

REST API를 테스트하는 프로그램이 별도로 존재하는군요 ㄷㄷ

말씀해주신 프로그램 위주로 구글링해보니 많은 정보가 있네요~

앞으로 활용해보겠습니다 ^^

 

humit 님 덕분에 오늘도 많이 배웠습니다!

그럼 곧 기말고사 기간이실텐데 화이팅하시고, 감기 조심하세요!!

항상 감사드립니다 ^-^

 

+) 광명점을 비롯하여 여러 지점의 정보가 잘 크롤링되네요~ 다시 한 번 감사드립니다!

comment menu
2019.12.05. 00:13

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 969
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 4643
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4479
266 [해결함] [스포어]지속적인 반달리즘적 행위 때문에 DB를 4월 이전으로 되돌리고싶습니다. 260578 18.04.29.19:07 443
265 [해결됨]별칭 도메인 관련해서 질문 다시 올립니다 8 260578 18.09.29.20:43 198
264 [해결됨][미디어위키] 로그인 문제가 있습니다. 5 260578 18.09.02.15:32 210
263 [해결][CURL/PHP] 스터디포어스서버에서의 PHP CURL에 대한 특정 서버의 잘못된 응답에 대하여 3 Hanam09 20.02.27.15:36 309
262 [해결] 미디어위키에서 문단 목록 번호를 매길 수 있게 설정하는 방법 없을까요? 8 은하수 22.11.20.19:11 321
261 [해결] 미디어위키 단축 주소 설정에 관한 궁금한 점이 있습니다. 11 은하수 22.11.22.01:52 390
260 [파이썬]완전제곱수 5 초보 21.02.17.10:23 236
259 [파이썬] 윈도우에서 pip install로 모듈 설치시에 문제가 발생하는 것과 관련하여 질문 드립니다 2 이니스프리 19.12.29.00:51 248
258 [파이썬] 윈도우에서 datetime 객체의 invalid format string 에러 3 이니스프리 20.03.04.15:52 1488
257 [파이썬] 웹 페이지 크롤링 시 조건에 따라 보여졌다 안보여지는 class를 조건문으로 사용 하고 싶은데요.. 4 위돈톡애니모 20.02.25.15:19 1333
256 [파이썬] 소용돌이(?) 코딩이 어렵네요 ㅠㅠ 6 image 이니스프리 20.02.14.22:06 2610
[파이썬] 롯데백화점 크롤링과 관련하여 질문을 드립니다 2 image 이니스프리 19.12.04.21:56 264
254 [파이썬] 결과를 print 문으로 출력하는 것과 파일로 출력하는 것과 결과가 왜 다른가요? 8 image 이니스프리 19.12.25.13:19 770
253 [파이썬] Temporary failure in name resolution에 대해 여쭤봅니다 2 이니스프리 20.02.25.11:50 987
252 [파이썬] concurrent.futures에서 ThreadPoolExecutor의 사용과 관련하여 질문 드립니다 4 이니스프리 20.08.09.14:16 85
251 [질문] 제이쿼리처럼 자주 사용하거나, 유용한 라이브러리가 또 있을까요? 5 JAVA 17.11.13.10:26 210
250 [질문] 오라클 클라우드 사용에 문제가 있습니다. 2 해피보이 21.05.15.21:59 660
249 [자바스크립트] 브라우저의 활성화 여부를 서버 측에서 확인할 수 있는가요?? 9 이니스프리 20.05.26.17:16 459
248 [우분투] 크롬에서 일부 글자가 꺠져서 나옵니다. 3 image 국내산라이츄 18.07.27.22:55 197
247 [완전긴급] 블루투스 헤드셋이 이상합니다. 4 국내산라이츄 17.10.27.17:04 257