2013-08-03 3 views
1

롤 번호를 입력 할 때 마크를 표시하는 웹 사이트가 있다고 해봅시다. 자신의 롤 번호를 늘리면 다른 사람의 마크도 같은 방식으로 볼 수 있습니다.Ruby 웹 봇을 사용하여 웹 사이트에서 데이터 검색 자동화

마크 (대학 프로젝트)의 표준 편차를 찾기 위해 Excel 시트를 만들고 싶습니다.

수동으로 모든 데이터를 입력 할 수 없으므로이 작업을 수행하고 모든 필드를 텍스트 파일에 저장할 수있는 자동화 방법을 찾고 있습니다.이 필드를 테이블로 쉽게 변환 할 수 있습니다.

배경 세부 사항 : 사이트 here-

연결합니다.

입력 내용은 텍스트 상자에 있습니다. 제출을 클릭하면 테이블이 서버 측에서 생성되어 웹 페이지에 표시됩니다.

코드는 웹 봇이 요청을 보내고 생성 된 페이지에서 데이터를 수집하기에 충분 해 보입니다.

문제 :

내가 어떻게 어디에 웹 로봇을 작성하는 웹 로봇을 작성하는 아무 생각이 없습니다. 그리고 프로그래밍 언어를 배울 준비가되었습니다.

나는 Ruby를 공부하기 시작했고 1 주일 정도면 충분할 정도의 수준에 도달했다. 그러나 나는 그렇게하는 방법에 관해서, 여전히 길을 찾을 수있는 도움이 필요합니다.

당신이 웹 링크 및 생성 된 페이지를 참조해야하는 경우, 내 롤 번호를 사용하여 주시기 바랍니다 : 모든 5675351

답변

0

첫째, 당신은 POST 요청을 발행 할 수있는 루비 라이브러리가 필요합니다. 예 : Faraday. 그런 다음 매개 변수의 해시 (양식 채우기)와 함께 POST 요청을 발행합니다. 귀하의 경우 매개 변수의 이름은 "regno"이며 (페이지의 HTML 소스를보고 직접 알아 내십시오) 값은 데이터를 추출하려는 번호입니다.

이 단계에서 얻게 될 결과는 결과가 나오는 html 페이지의 소스입니다.

결과는 모두 거의 같은 형태입니다 :

<tr bgColor="#ffffff"> 
    <td align="middle"><font face="Arial" size=2> 301</font></td> 
    <td align="left" ><font face="Arial" size=2>ENGLISH CORE</font></td> 
    <td align="left" ><font face="Arial" size=2>084&nbsp;&nbsp;&nbsp;&nbsp;</font></td> 
    <td align="middle"><font face="Arial" size=2>A2</font></td> 
    </tr> 

만 TR의 bgColor가이 다릅니다 물론 데이터. 예를 들어 regular expression을 사용하여이 모든 블록을 추출해야합니다. 하나 더 잘 할 수 있고 다른 루비 라이브러리 인 Nokogiri의 XPath 기능을 사용할 수 있습니다. 이 두 가지를 혼자서보아야합니다.

모든 데이터를 가지고 있다면 Excel 시트를 만들 필요가 없습니다. 루비는 그와 같은 간단한 수학을 스스로 수행 할 수 있습니다.

언급 된 두 라이브러리의 모든 예제를 살펴보고 특정 작업에 관련된 모든 라이브러리를 적용하는 것이 좋습니다. Ruby는 실제로 라이브러리가 대부분 좋고 시작이 쉽지 않기 때문에 실제로 이러한 작업을 수행하기에 좋은 선택입니다. 프로그래밍 경험이 없어도 상황이 복잡해집니다.

+0

감사합니다! 이것이 내가 알아야 할 모든 것입니다. 새로운 언어를 배우는 것이 문제가되지 않도록 사전 프로그래밍 기술을 습득했습니다. –

관련 문제