2016-08-30 2 views
-1

Ich kratze dynamische Inhalte mit PhantomJS. Ich möchte diese Website laden: https://www.instagram.com/explore/tags/fun/, und klicken Sie auf die Schaltfläche am unteren Rand des Bildschirms "Mehr laden", um mehr Bilder zu laden, und speichern Sie den HAR-Inhalt. Dieser Code funktioniert:PhantomJS 'Klick' Ereignis funktioniert auf Link, aber nicht auf Knopf?

  var page require('webpage').create(); 

      page.open('http://www.milliondollarhomepage.com', function(status) { 

      setTimeout(function(){ 
      page.sendEvent('click', 240, 210, button='left') }, 200); 

      setTimeout(function(){ 
      page.render("screensho1.png"); 
        phantom.exit(); 
       }, 5000); 

      }); 

Es klickt ein --link-- auf dem Bildschirm. Aber wenn ich meine URL von Interesse benutze, wird https://www.instagram.com/explore/tags/fun/ der gleiche Code mit den richtigen Koordinaten nicht auf die --- Schaltfläche --- klicken.

Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Positionierung von Elementen ist oft relativ, daher würde ich empfehlen, absolute Klickereignisse zu vermeiden; arbeiten stattdessen mit Selektoren und lösen ein Klickereignis auf dem Element aus:

var page = require('webpage').create(); 
var fs = require('fs'); 
var system = require('system'); 

var url = "https://www.instagram.com/explore/tags/fun/"; 

page.open(url, function(status) { 
    console.log("Status: " + status); 
    if(status === "success") { 

    setTimeout(
     function(){ 
      page.evaluate(
       function(){document.querySelector("#react-root > section > main > article > div > div > a").click();} 
      ); 
     }, 200); 

    setTimeout(
     function(){ 
      path = 'hardcoded.png'; 
      page.render(path, {format: 'png', quality: '100'}); 
      phantom.exit(); 
     }, 1000); 

    }else{ 
     phantom.exit(); 
    } 
}); 
Verwandte Themen