파이썬으로 json,post 형식의 홈페이지를 파싱하고 싶습니다.

조회수 2763회

파이썬으로 학교 홈페이지의 수강 편람 페이지를 파싱하고 싶습니다. 소스 코드의 url은 수강편람 URL인 https://e-onestop.pusan.ac.kr/menu/class/C03/C03001?menuId=2000030301&rMenu=03 이 아니라 '검색' 버튼을 눌렀을 시, 크롬의 F12 개발자 모드에서 network 항목에서 나오는 requst url로 하였습니다. 이미지

import urllib2
import json
import urllib
import requests
from BeautifulSoup import BeautifulSoup
url = "https://e-onestop.pusan.ac.kr/middleware/curriculum/college/CollegeAssignInfoSearch"
payload = {
    'pName': ['YEAR', 'TERM', 'DEPTCD', 'CULTCD', 'GUBUN'],
    'pValue': ['2017', '10', '480000', '', '1']
}
response = requests.post(url, params=payload)

print response.text

import되어있는 라이브러리들의 기본 post 방법으로는 테스트 해보았지만 저가 했을 시 모두 검색 버튼을 눌렀을 시 추가되거나 변경되어 나오는 부분이 파싱한 html소스코드에 없었습니다. 유동적인 부분만 받아오지 못하는 것을 보니 정상동작을 하지 않을 것 같은데 무엇이 빠져있는지 몰라 여기에 글을 쓰게 되었습니다.

혹시 도움을 주실 수 있는 분이 계신다면 조그만한것이라도 감사하니 답변 부탁드리겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 이미지

    이 검색결과를 말씀하신거라면 url만 바꾸면 해결될 문제 같습니다.

    # console: POST XHR
    mainurl = "https://e-onestop.pusan.ac.kr/menu/class/C03/C03001?menuId=2000030301&rMenu=03"
    suburl = "/middleware/curriculum/college/CollegeAssignInfoSearch"
    
    
    url = mainurl+suburl
    
    payload = {
        'pName': ['YEAR', 'TERM', 'DEPTCD', 'CULTCD', 'GUBUN'],
        'pValue': ['2017', '10', '11665', '', '5']
    }
    response = requests.post(url, params=payload)
    
    print response.text
    

    mainurl은 학부 수강편람 url이고, post를 하는 위치는 suburl입니다. payload는 둘을 합친 주소로 보냈습니다. 저는 파이어폭스 유저라서 개발자도구에 console을 보고 url이나 payload를 알아냈습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 답변 정말 감사합니다. 그런데 파이썬에서 저가 위 코드를 실행시켰을 시, 저는 교과목에 대한 html 소스코드가 파이썬 결과에 출력되지 않습니다. 혹시 확인 가능할까요? 알 수 없는 사용자 2017.2.3 10:22

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

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

(ಠ_ಠ)
(ಠ‿ಠ)