2017-10-11 3 views
0

원하는 수의 버튼이있는 웹 페이지를 구문 분석하고 싶습니다. 모든 버튼을 클릭하고 각 버튼에서 결과 데이터를 가져오고 싶습니다. 나는 이것을 어떻게하는지 전혀 모른다. 내 말 - 코드, 지금까지 :기수 - 여러 단추를 클릭 한 다음 데이터를 가져 오는 중 - 어떻게?

horse 
.on('resourceError', function(err) { 
    console.dir(err); 
    horse.close(); 
}) 
.userAgent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0') 
.open('https://www.example.com') 
.click('#agree') 
.click('input[class="button"]') 
.waitForSelector('#address') 
.type('#address', 'blah blah') 
.click('#button-search-address') 
.wait(3000) 
.evaluate(function() { 
    var btns=[]; 
    $('[data-agency-code]').each(function(i) { 
    btns.push({dac: $(this).attr('data-agency-code')}); 
    }); 
    return btns; 
}) 
.then(?????) 

그래서 모든 기관 코드가 btns 배열에 있습니다. 지금은이 의사 코드처럼 정렬의 모든 버튼을 통해 이동해야합니다

var resData=[]; 
jQuery.each(btns, function(i, val) { 
    ... 
    .click('[data-agency-code]'+val.dac) 
    .waitForSelector('#data-agency-data') 
    .grab data like: 
    resData.push({email: $('#agency-email').val(), phone: $('#agency-phone').val()}); 
});  

그림 아웃 할 수 없음이 루프를 수행하는 기병 코드를. 고마워.

답변

1

호저 Github 페이지의 85 호에서 작동합니다.

horse 
    .on('resourceError', function(err) { 
    console.dir(err); 
    horse.close(); 
    }) 
    .userAgent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0') 
    .open('https://www.example.com') 
    .click('#agree') 
    .click('input[class="button"]') 
    .waitForSelector('#address') 
    .type('#address', 'blah blah') 
    .click('#button-search-address') 
    .wait(3000) 
    .evaluate(function() { 
    var btns=[]; 
    $('[data-agency-code]').each(function(i) { 
     btns.push({dac: $(this).attr('data-agency-code')}); 
    }); 
    return btns; 
    }) 
    .then(function(btns) { 
    if (btns.length == 0) 
     horse.close(); 
    console.log(btns); 
    var chain = horse; 
    for(var i=0; i < btns.length; i++) { 
     chain = chain 
     .click('[data-agency-code='+btns[i].dac+']') 
     .wait(2000) 
     .evaluate(function() { 
      return { 
      name: $('some selector').text().trim(), 
      email: $('some selector').text(), 
      www: $('some selector').text() 
      } 
     }) 
     .then(function(aobj) { 
      agya.push(aobj); 
     }) 
    } 
    return chain; 
    }) 
    .then(function(chain) { 
    console.log(agya); 
    }) 
    .close(); 

지금 나는 agya 배열의 모든 기관과 정보를 가지고 :

여기 페이지의 모든 버튼을 통과하는 코드입니다.