2010-03-11 6 views
3

결과를 검색하고 처리하는 간단한 get 명령을 수행하는 펄 프로그램을 작성하고 있습니다. 그러나 사이트가 업데이트되었으며 결과를 처리하는 Java 구성 요소가 추가되었습니다 (실제 데이터가 소스 코드에 더 이상 포함되지 않음). Perl이 ajax 양식과 상호 작용하는 방법

사이트입니다 : http://wro.westchesterclerk.com/legalsearch.aspx

에 넣어보십시오 :
인덱스 번호 : 11103
년도 : 내가 문법적으로 "는"인덱스 번호 "를 입력하고 프로에 할 수 있도록하려면 2009

year "를 양식 하단에"번호로 검색 "이라고 말한 다음 그 옆에 나열된 결과를 검색합니다.

Perl에서는 URL을 통해 변수를 전달하는 많은 프로그램을 작성했으며 결과는 소스 코드에 나열되어있어 파싱하기 쉽습니다.

처럼 :

$html = get("http://www.url.com?id=$somenum&year=$someyear") 

을하지만이 나에게 완전히 새로운 내가 어디서 시작 해야할지 모르겠 : (단순 LWP를 사용). 저는 LWP에 다소 익숙합니다 : UserAgent와 Mechanize.

정말 감사드립니다.

감사합니다.

+0

Java 또는 Javascript를 의미합니까? http://www.sislands.com/coin70/week1/javajs.htm 힌트 : AJAX의 J는 Java를 의미하지 않습니다. – daotoad

+0

좋은 질문입니다! 나는 약간 당혹 스럽다. (특히 나는 CS에 학위를 갖고 있기 때문에) 그러나 나는 정말로 모른다. 페이지 전체를 다시로드하지 않고 페이지의 일부분 만 다시 그리기 때문에 아약스 여야한다는 (어리석은) 가정을했습니다. 적어도 A는 비동기를 의미합니다! – Jeff

답변

2

브라우저를 구동하는 모듈 중 하나를 사용하는 것이 더 합리적 일 수 있습니다. Mozilla::Mechanize 또는 Selenium 도구와 같은 것입니다.

브라우저는 AJAX를 사용하여 서버와 상호 작용하고 DOM을 다시 렌더링하는 방법을 가장 잘 알고 있으므로이 기능을 바탕으로 스크립트를 빌드하십시오.

0

에서 묻는 내용은입니다. 불가능하지만 어렵지 않습니다.

방법 A : 자바 스크립트 코드를 살펴볼 수 있습니다. 그들의 "아약스"가하고있는 일은 다른 웹 페이지로 get/post 요청을하고 결과를 동적으로 로딩하는 것입니다. 링크가 무엇인지, 적절한 인수를 해독 할 수 있다면 계속해서 얻을 수 있습니다. firebug 플러그인과 javascript를 모호하게하는 데 도움이되는 다른 도구를 얻는 것이 좋습니다.

다른 방법 : 프로그램이 웹 브라우저 (firefox와 같은 javascript URL 지원)에 액세스 할 수있는 경우. 당신은 프로그램 적으로이 주소로 가서 잠시 기다려 데이터를 얻을 수 있습니다.

http://wro.westchesterclerk.com/legalsearch.aspx 
javascript: function go() { document.getElementById('ctl00_tbSearchArea__ctl1_cphLegalSearch_splMain_tmpl0_tbLegalSearchType__ctl0_txtInde xNo').value=11109; document.getElementById('ctl00_tbSearchArea__ctl1_cphLegalSearch_splMain_tmpl0_tbLegalSearchType__ctl0_txtYear').value='09';searchClick();} go(); 

이것은 우리가 프로그래밍 방식으로이 자료를 둘러보기 위해 사용한 방법입니다. 최근에 Web Kit (으)로 전환했습니다. 그리고 우리가 브라우저를로드 할 수있는 가상 데스크탑을 만들 Xvfb가/Xvnc가를 사용한 비디오 디스플레이를 복용에서이를 제거합니다.


사람들은 내가 지금까지 해낸 한 방법이다. 네가 다른 걸 생각해 내면 알려줘. 또한 내가 도왔 으면 좋겠어.

3

그런 종류의 질문은 많이 묻습니다. 표준 응답은 Wireshark입니다.

나는 당신이 제공 한 테스트 데이터로 그 웹 사이트에서 방금 사용하고 있었고 책임있는 단일 POST 요청을 추출했습니다. 이렇게하면 Javascript를 모두 무시할 수 있습니다.

+0

니스. 나는 그것을 시험해야 할 것이다. –

+1

http://stackoverflow.com/questions/2118415 캡처를 실행하고 HTTP로 필터링 한 다음 요청을 선택하고 컨텍스트 메뉴에서 TCP 스트림 따르기를 선택합니다. – daxim

관련 문제