2017-04-14 3 views
-1

일부 특정 입력을 제공하여 웹 사이트에서 데이터를 가져 오는 데 파이썬을 사용할 수 있는지 알고 싶습니다. .. 당신이 이해 바랍니다, 나는 내가 다소 코드를 작성해야 알아,하지만 여기에 내가 처음부터 시작 해요 혼란 비트파이썬을 사용하여 웹 사이트에서 데이터 가져 오기

설명 :

http://exam.cusat.ac.in/ : 이것은 우리 대학의 웹 사이트

입니다

내가 같은 웹 사이트에 주어진 프로그램을 통해 첫 번째 링크를 클릭 할

,

B.Tech V 학기 다운로드/결과보기 2016 년 11 월 - 정기 시험

다음 페이지에 등록 번호를 입력 할 수있는 옵션이 있습니다. 등록 번호를 알고 있기 때문에 변수에 할당 할 수 있습니다. 여기 여러 학생의 결과를 얻고 싶습니다. 이것이 프로그램의 주요 목표입니다.

예 : 12153600부터 12153660까지의 결과는 웹 사이트에서 하나씩 검색해야합니다.

마지막으로 결과를 얻을 수 있다면 PDF로 변환 할 수 있습니까? 가능하다면 그 모든 결과를 하나의 PDF 파일로 다른 페이지로 변환 할 수 있습니까?

+0

왜 60 명의 연속적인 등록 번호를 가진 60 명의 다른 학생의 결과를 원하십니까? –

+0

사실 그것은 데이터 조작을위한 것입니다. @ MaxPower –

답변

1

이 사이트 내 관찰 있습니다

  1. 이 사이트는 학생의 결과를 표시하는 형식을 사용는
  2. 양식의 URL이 http://exam.cusat.ac.in/erp5/cusat/CUSAT-RESULT/Result_Declaration/display_sup_result
  3. 양식 방법은 POST
  4. 입니다
  5. 데이터는 URL에 전달 regno,deg_name,semester,year,result_type

위의 URL로 게시물 요청을 제기해야합니다. 간단한 파이썬과 요청으로 그렇게 할 수 있습니다.

import requests # to make requests. 
import pdfkit # for saving as pdf 
url="http://exam.cusat.ac.in/erp5/cusat/CUSAT-RESULT/Result_Declaration/display_sup_result" #form url 
pdfs=[] 
payload={ "deg_name":"B.Tech", "semester":"5", "month":"November", "year":"2016", "result_type":"Regular" } 
option={'quiet': ''} 
for i in range(12153600,12153660+1): 
    payload.update({"regno":str(i)}) 
    response=requests.post(url,data=payload) 
    pdfkit.from_string(response.content,str(i)+".pdf",options=option) #saves to 12153600.pdf - 12153660.pdf files 
    open("result_"+str(i)+".html","w").write(response.content) #This will save results from roll no 12153600 - 12153660 in result_rollno.html files. 

이렇게하면 60 개의 별도의 PDF 파일이 만들어집니다.

응답을 PDF 파일로 저장하려면 pdfkit , this for tutorial을 참조하십시오. 나는 당신이 손으로 pdf 저장 부분을 통과하기를 원한다. 그래서 나는 pdf 부분으로 저축하고있다. 당신이 어려울 경우 python으로 pdf로 데이터를 저장할 수있는 패키지가 없다. 필자는 목록을 입력/파일 형식으로 받아들이 기 때문에 모든 응답을 목록에 추가하고이를 사용하여 단일 PDF 파일을 만들 수 있으므로이 방법을 선호합니다.

+0

우선 모두 덕분에 @ 마니 .. 그게 내가 원하는 건 ...하지만 여전히 내가 가진 몇 가지 문제가 .. 내가 사용하는 pdfkit하지만 원하는 출력을 정확히 양식 ... 결과 html 페이지에 대한 CSS 파일이 없어도 올바른 포맷이 이루어지지 않았습니다 ... 결과 페이지에서 인쇄를 클릭하면 pdfkit을 사용하는 동안 제대로 정렬되지 않습니다. 제발 도와주세요 ... –

+0

별도의 PDF 파일로 저장하기위한 코드가 추가되었습니다. – Mani

+0

이 질문을 참조 할 수 있겠습니까? @Mani http://stackoverflow.com/questions/43524495/converting-html-file-to-pdf-with-python –

1

파이썬 라이브러리 Selenium을 확인하십시오.

해당 라이브러리로 원하는 것을 얻을 수 있습니다. 특히 Selenium의 get 함수를 사용하여 웹 사이트를 가져오고, 셀레늄의 클릭 기능을 사용하여 첫 번째 링크를 클릭하는 등의 작업을 수행합니다.

많은 연구원들이 페이스 북과 같은 웹 사이트에서 클릭 이벤트를 시뮬레이션하고 결과 데이터를 수집하는 데이를 사용합니다.

1
당신은 요청을 보내는 파이썬의 requests 라이브러리를 사용할 수 있습니다

BeautifulSoup 귀하가받는 HTML을 구문 분석합니다.

먼저 브라우저의 개발 도구를 사용하여 페이지를 검사해야합니다.

<form id="myForm0121x1" action="..." method="post"> 
<input name="month" value="..." type="hidden"> 
<input name="year" value="..." type="hidden"> 
<input name="sem" value="..." type="hidden"> 
<input name="reg_type" value="..." type="hidden"> 
<input name="dn" value="..." type="hidden"> 
<input name="status1" value="..." type="hidden"> 
</form> 

각 링크 input 요소와 함께 action 속성의 URL 값에 POST 요청 - 당신이 할 경우, 당신은 각 링크 행이 form 요소 것을 발견 할 것이다. 프로그램 requests 사용하여이 작업을 수행하려면 - 당신이 다음 r.content을 선택하면

r = requests.post('url',data={'month':'...','year':'...','sem':'...','reg_type':'...','dn':'...','status1':'...'}) 

을, 당신은 second page의 소스를받은 것입니다.이 페이지에 대해 위의 과정을 반복합니다. 이번에는 데이터 매개 변수의 키/값을 적절하게 변경하고 (관리자를 사용) 추가 'regno':'xyz' (xyz = 등록 번호)을 추가하면 학생의 결과에 대한 최종 html 콘텐츠가 전송됩니다 페이지. BeautifulSoup을 사용하여 이것을 분석하고 필요한 것을 선택하십시오.

+0

BeautifulSoup는 좋은 접근 방식입니다. 나 또한 BeautifulSoup 크롤링 프로세스에 대한 사용 – hakiko

관련 문제