• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

강의내용중 코드 질문

20.02.14 21:41 작성 조회수 153

0

똑같은 한빛출판홈페이지에서 강사님께서 강의하신 내용과 약간 다르게 짜보았습니다.(이건 중요한게 아니고...)

아래코드는 로그인 후, 상품을 카트에 넣고 그 상품명을 찾는 코드입니다.

결과는 예상과 같이 잘 나옵니다. 

제가 궁금한 점은  

req = session.post(request_url, data = params) 부분에서 data 대신에 다른 것을 쓰면

request() got an unexpected keyword argument '~~~'

이런 사인이 뜹니다. 근데 data 대신에 headers 를 쓰면 값은 안나옵니다. 하지만 에러사인은 안뜹니다. (headers를 써본 이유는 지난번 네이버 openAPI에서 headers로 아이디/패스워드 정보를 넘겨준 기억이 있어서..) 

이거 왜 그런건가요?

추가로 한가지 더 질문드리자면, 

어떤 사이트를 알려주신 코드대로 짜서, print(session.cookies.get_dict()) 를 해보면,

{'PHPSESSID': '831c4b75bb92f4b55de47bca51617d57', 'gd_user_enamooPass': 'X3docUpEbGVNS0EuRWJFeElmRW5JQC0pSmwxdE5LY3VHYl81SmZZbkVnbDU%3D'}

이런식으로 결과값이 나옵니다. 이것은 session이 두개라는 의미인가요? 쿠키에 이 두가지 session을 저장해두었다가 내가 서버에 정보를 요청할때 마다 이 두가지 session을 함께 보낸다고 생각해도 되나요?

(아니면 혹시 session은 꼭 하나여야만 하는지....) 

답변 1

답변을 작성해보세요.

0

안녕하세요. 우선 굉장히 잘하고 계시는 것 같아요. 

아무래도 웹사이트를 개발해보신적이 없으셔서, 크롤링이라는 것을 웹사이트마다 모두 동일하게 적용할 수 있다고 보시는 것일 수도 있는듯해요. 구글을 통해서 여러가지 기술적인 내용도 찾아보신다면 더 많은 부분까지 이해하실 수 있으실 것 같습니다. session.post에서 data 대신에 다른 것을 쓰면 그런 사인이 뜨는 것은 파이썬 함수 사용법을 아직 중급 수준으로 숙지하지 못하셔서일 듯 해요. post 함수에 특정 변수 이름과 default값을 미리 정해놓을 수 있습니다. 그런데 그런 변수 이름이 아닌 아무 변수 이름=값 의 형태가 들어오니, 위와 같이 그런 변수 이름=값 이 정해져있지 않다는 뜻입니다.

HTTP response를 통해 넘어오는 쿠키값은 웹사이트에 따라 다를 수 있고, 갯수도 다를 수 있습니다. 위와 같이 해당 사이트에서는 HTTP response로 두개의 값이 넘어왔고, 동일한 세션이라면 해당 두 개의 값이 신규 HTTP request에 함께 넘어가는 것이 일반적입니다. (웹사이트상에서 동작시를 의미합니다.)

감사합니다.