2015-01-22 3 views
1

웹 크롤링 프로젝트에서 작업 중이며 양식에 포함되지 않은 입력을 대상으로 지정하는 데 문제가 있습니다. 이런 식으로 뭔가 :WWW :: Mechanize 양식의 일부가 아닌 입력을 입력하십시오.

<div> 
    Book name: <input type="text" name="book" /><br /> 
    Student: <input type="text" name="student" /><br /> 
    <input type="button" id="btnSubmit" value="Submit" /> 
</div> 

Ajax 호출 : 나는 데이터를 입력 기계화를 사용하고 소위 양식을 제출할 수있는 경우

$("#btnSubmit").on('click', function() { 
    type: "POST", 
    url: "borrow.php", 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify({ 
      book: $("input[name='book']").val(), 
      student: $("input[name='student']").val() 
      }), 
    dataType: "json", 
    success: function (result) { ... } 
}); 

난 그냥 궁금 해서요.

post()를 사용하여 POST 데이터를 직선으로 처리했지만 success() 함수가 너무 많은 지시를 처리하기 때문에 제출 버튼을 대신 클릭하고 싶습니다.

+0

WWW :: Mechanize에는 JavaScript 엔진이 없습니다. WWW :: Mechanize를 검색하면 JavaScript가 해결책을 찾아야합니다. – ikegami

+0

당신이 원하는 것은'body ":'book": , student ": }''borrow.php'에'POST '요청을 보내는 것입니다. 'WWW :: Mechanize'가'LWP :: UserAgent'이므로'post' 메소드를 사용하여이를 성취 할 수 있어야합니다. –

답변

0

나는 다음을 수행하여 오늘이 문제를 해결 :이 도움이

my $m = WWW::Mechanize->new(); 

# Or however else you get your form data to submit 
my $field1 = shift($m->find_all_inputs(name => 'field1'))->value; 
my $field2 = shift($m->find_all_inputs(name => 'field2'))->value; 

$m->post('http://somesite.com/expectsPost.cgi', 
{ field1 => $field1, 
    field2 => $field2, 
    action => 'DoSomethingCool' }); 

my $result = $m->content; 

희망을!