[PYTHON] Probieren Sie verschiedene Dinge mit PhantomJS aus

Was ist PhantomJS?

HP: PhantomJS Als Referenz: Warum ist "WebKit" zwischen Google und Apple so wichtig?

Kurz gesagt, ein Webkit-basierter Headless-Browser. Webkit ist eine Rendering-Engine, die hauptsächlich in Webbrowsern verwendet wird. PhantomJS verwendet eine im Webkit integrierte Javascript-Engine namens JavaScriptCore (die auch Safari verwendet). Es kann auch zum Scraping und zur Bildschirmaufnahme verwendet werden.

Wie haben Sie PhantomJS kennengelernt?

Als ich versuchte, mit Python 3.4 zu kratzen, stieß ich auf eine Site mit JavaScript-Rendering. Schnelles Web-Scraping mit Python (während das Laden von JavaScript unterstützt wird) Ich habe mich entschlossen, der Site als Referenz zu folgen. ..

Installation

Die Installation hat also tatsächlich begonnen. $ brew install phantomjs

Experiment #0

Ich werde verschiedene Dinge ausprobieren, indem ich auf Schnellstart verweise, der im Internet veröffentlicht wurde. Grundsätzlich werden wir die Javascript-Sprache verwenden.

Experiment #1 Hello, World! Wechseln Sie in das Verzeichnis, in das Sie auf das Terminal (oder den Dateinamen mkdir) projizieren möchten. Erstellen Sie eine Datei mit touch hello.js im Projektverzeichnis und beginnen Sie mit open hello.js.

hello.js


console.log('Hello, World!');
phantom.exit();

Wenn ich "phantomjs hello.js" auf dem Terminal ausführe, wird "Hello, World!" Zurückgegeben. Die erste Zeile, console.log, wirft die Zeichenfolge Hallo Welt! In das Terminal. Die ausgelösten Informationen werden tatsächlich vom Befehl phantom.exit () ausgeführt. Der Code wird übrigens nur verarbeitet, wenn Sie den Befehl phantom.exit () schreiben.

Experiment #2 Page Loading Mit PhantomJS können Sie auf jeder Webseite ein Objekt erstellen und die Webseite laden, analysieren und generieren.

page_loading.js


//Machen Sie einen kopflosen Browser
var page = require('webpage').create();

//Öffnen Sie die angegebene URL
page.open('https://google.com', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
  	//screen capture
    page.render('google.png');
  }
  phantom.exit();
});

Wenn dies erfolgreich ist, sollte "Status: Erfolg" angezeigt werden und Sie sollten eine Google-Bildschirmaufnahme in Ihrem Arbeitsverzeichnis haben. Außerdem können Sie anscheinend die Geschwindigkeit beim Laden von Seiten messen. Wenn Sie beispielsweise wissen möchten, wie schnell eine Seite auf "http: // www.google.com" geladen wird,

loadspeed.js


var page = require('webpage').create(),
  system = require('system'),
  t, address;

//<>Geben Sie die angegebene URL ein
if (system.args.length === 1) {
  console.log('Usage: loadspeed.js <http://www.google.com>');
  phantom.exit();
}

t = Date.now();
address = system.args[1];
page.open(address, function(status) {
  if (status !== 'success') {
    console.log('FAIL to load the address');
  } else {
    t = Date.now() - t;
    console.log('Loading ' + system.args[1]);
    console.log('Loading time ' + t + ' msec');
  }
  phantom.exit();
});

Wenn Sie es auf "phantomjs loadspeed.js http: // www.google.com" ausführen, wird es "http://www.google.com" geladen Das Ausführungsergebnis wie Ladezeit 698 ms wird angezeigt.

Experiment #3 Code Evaluation Grundsätzlich können Sie die Funktion evalu () verwenden, um die JavaScript-Daten im Web abzurufen. Wenn Sie beispielsweise den Titel auf einer Webseite abrufen möchten,

//Erstellen Sie einen kopflosen Browser
var page = require('webpage').create();

//Öffne URL
page.open('http://www.google.com', function(status) {
  //Holen Sie sich Daten über JS im Browser
  var title = page.evaluate(function() {
    return document.title;
  });
  console.log('Page title is ' + title);
  phantom.exit();
});

Wenn ich es auf dem Terminal ausführe, heißt es "Seitentitel ist Google".

Supplemental tryout Sie können sogar PhantomJs verwenden, um eine Fahranleitung basierend auf Google Map bereitzustellen.

direction.js


// Get driving direction using Google Directions API.

var page = require('webpage').create(),
    system = require('system'),
    origin, dest, steps;

if (system.args.length < 3) {
    console.log('Usage: direction.js origin destination');
    console.log('Example: direction.js "San Diego" "Palo Alto"');
    phantom.exit(1);
} else {
    origin = system.args[1];
    dest = system.args[2];
    page.open(encodeURI('http://maps.googleapis.com/maps/api/directions/xml?origin=' + origin +
                '&destination=' + dest + '&units=imperial&mode=driving&sensor=false'), function (status) {
        if (status !== 'success') {
            console.log('Unable to access network');
        } else {
            steps = page.content.match(/<html_instructions>(.*)<\/html_instructions>/ig);
            if (steps == null) {
                console.log('No data available for ' + origin + ' to ' + dest);
            } else {
                steps.forEach(function (ins) {
                    ins = ins.replace(/\&lt;/ig, '<').replace(/\&gt;/ig, '>');
                    ins = ins.replace(/\<div/ig, '\n<div');
                    ins = ins.replace(/<.*?>/g, '');
                    console.log(ins);
                });
                console.log('');
                console.log(page.content.match(/<copyrights>.*<\/copyrights>/ig).join('').replace(/<.*?>/g, ''));
            }
        }
        phantom.exit();
    });
}

In ein geeignetes Verzeichnis und führen Sie es auf dem Terminal unter "phantomjs direction.js Abflugpunkt Ankunftspunkt" aus. Als ich es mit phantomjs direction.js Tokyo Osaka als Test lief,

Head south
Biegen Sie an der Metropolitan Government South (Kreuzung) rechts in Richtung Metropolitan Route 431 ab
Im Kakumei Inhabitant Center (Kreuzung),Fahren Sie weiter auf der Metropolitan Route 431
Biegen Sie am Nishi-Shinjuku 4-chome (Kreuzung) links auf die Yamate-dori ab/Route 317
Fahren Sie geradeaus weiter, um auf Yamate-dori zu bleiben/Route 317
Nehmen Sie die Auffahrt rechts zur Metropolitan Expressway Central Circular Route
Toll road
Fahren Sie weiter bis zur Ausfahrt Hatsudai Minami Toll Office
Toll road
Fahren Sie auf die Metropolitan Expressway Central Circular Route
Toll road
Nehmen Sie die Ausfahrt Ohashi JCT auf der rechten Seite in Richtung Tomei / Ring im Stadtzentrum
Toll road
Keep left at the fork,Folgen Sie der Beschilderung nach Tomei und fahren Sie auf die Shibuya-Linie Nr. 3 des Metropolitan Expressway
Toll road
Halten Sie sich rechts, um auf dem Tomei Expressway weiterzufahren
Toll road
Halten Sie sich an der Gabelung rechts, um auf dem Tomei Expressway zu bleiben,Folgen Sie den Schildern zur richtigen Route, Shizuoka, Gotenba
Toll road
Nehmen Sie die Ausfahrt Gotenba JCT in Richtung Shintomei / Shizuoka / Nagoya
Toll road
Fahren Sie weiter auf dem New Tomei Expressway
Toll road
Fahren Sie weiter bis zur Ausfahrt Inasa Hamamatsu JCT
Toll road
Keep right at the fork,Folgen Sie der Beschilderung nach Tomei / Tokio / Nagoya und fahren Sie auf den New Tomei Expressway
Toll road
Nehmen Sie die Ausfahrt Mikaday JCT auf der rechten Seite in Richtung Tomei / Nagoya
Toll road
Fahren Sie auf den Tomei Expressway
Toll road
Nehmen Sie die Ausfahrt Toyoda JCT in Richtung Tokai Ring, Isewan Coastal Road, Ausfahrt Toyoda East, Toki JCT, Yokkaichi, Shinmeijin
Toll road
Keep right at the fork,Folgen Sie den Schildern zur Isewan Coastal Road, Yokkaichi, Shinmeijin und fahren Sie auf die Isewan Coastal Road
Toll road
Nehmen Sie die Ausfahrt Highspeed Tobishima IC auf der rechten Seite in Richtung Ise Bay Expressway
Toll road
Fahren Sie weiter auf dem Ise Gulf Expressway
Toll road
Nehmen Sie die Ausfahrt Yokkaichi JCT auf der rechten Seite in Richtung Tomei Hando / Osaka / Ise Road
Toll road
Fahren Sie auf den Tomeihan Expressway
Toll road
Nehmen Sie die Ausfahrt Kameyama JCT in Richtung New Meishin / Kyoto / Osaka
Toll road
Fahren Sie weiter auf den Shinmeijin Expressway
Toll road
Nehmen Sie die Ausfahrt Kusatsu JCT in Richtung Kusatsu PA / Meishin / Keiji / Kyoto / Osaka
Toll road
Halten Sie sich an der Gabelung rechts, um an der Ausfahrt Kusatsu PA weiterzufahren,Folgen Sie den Schildern nach Meishin und fahren Sie auf den Meishin Expressway
Toll road
Halten Sie sich an der Gabelung rechts, um auf dem Meishin Expressway zu bleiben,Folgen Sie den Schildern zur richtigen Route
Toll road
Nehmen Sie die Ausfahrt Toyonaka IC in Richtung Hanshin Expressway, Toyonaka Exit, Osaka City
Toll road
Keep left at the fork,Folgen Sie der Beschilderung nach Osaka City / allgemeine Straßenausfahrt / Hanshin Highway
Toll road
Halten Sie sich an der Gabelung rechts, um am High Speed Toyonaka IC weiterzufahren,Folgen Sie den Schildern nach Hanshin High Speed
Toll road
Fahren Sie weiter bis zur Ausfahrt Meishin Hanshin Charge Simultaneous Collection Toll Office
Toll road
Fahren Sie auf den Hanshin Expressway Nr. 11 Ikeda Line
Toll road
Fahren Sie auf die Hanshin Expressway No. 1 Loop Line
Toll road
Nehmen Sie die Ausfahrt Toshitaka Kitahama in Richtung Kitahama
Partial toll road
Biegen Sie bei Sugawaramachi Nishi (Kreuzung) rechts auf Sakaisuji ab
Etwas rechts, um auf Sakaisuji zu bleiben
Leicht rechts auf Tenjinbashisuji
Biegen Sie bei Tenjinbashi (Kreuzung) rechts ab auf Tosabori-dori/Präfekturroute 168
Biegen Sie an der Kitahama 2 (Kreuzung) rechts ab in Richtung Nakanoshima-dori
Turn is not allowed 8:00 AM – 8:00 PM
Biegen Sie links ab in Richtung Nakanoshima Dori
Biegen Sie links ab auf Nakanoshima Dori
Destination will be on the left

Abgesehen von der Genauigkeit scheint es sich vorerst zu bewegen. Es stellt sich heraus, dass Sie mit PhantomJS allein verschiedene Dinge ausprobieren können. Referenz: direction.js

Recommended Posts

Probieren Sie verschiedene Dinge mit PhantomJS aus
Persönliche Tipps, wenn Sie verschiedene Dinge mit Python 3 tun
Versuchen Sie es mit Python.
Versuchen Sie SNN mit BindsNET
Verschiedene Farbleisten mit Matplotlib
Versuchen Sie eine Regression mit TensorFlow
Ich habe mit Python verschiedene Dinge ausprobiert: Schaben (Beautiful Soup + Selenium + PhantomJS) und morphologische Analyse
Versuchen Sie, den Boden durch Rekursion herauszufordern
Versuchen Sie die Funktionsoptimierung mit Optuna
Versuchen Sie es mit TensorFlow
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Versuchen Sie, verschiedene Informationen anzuzeigen, die für das Debuggen mit Python nützlich sind
Versuchen Sie die Kantenerkennung mit OpenCV
Versuchen Sie, RBM mit Chainer zu implementieren.
Versuchen Sie Google Mock mit C.
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie, mit einer Shell zu programmieren!
Versuchen Sie die GUI-Programmierung mit Hy
Versuchen Sie Auto Encoder mit Pytorch
Versuchen Sie die Matrixoperation mit NumPy
Versuchen Sie, XOR mit PyTorch zu implementieren
Versuchen Sie, CNN mit ChainerRL auszuführen
Versuchen Sie Deep Learning mit FPGA
Einzeilige Ergänzung mit verschiedenen Skripten
Bearbeiten Sie verschiedene Datenbanken mit Python
Versuchen Sie, Python mit Try Jupyter auszuführen
Versuchen Sie, Parfüm mit Go zu implementieren
Entwickelt mit Choregraphe und verschiedenen Memoranden
Probieren Sie Selenium Grid mit Docker aus
Versuchen Sie die Gesichtserkennung mit Python
Probieren Sie OpenCV mit Google Colaboratory aus
Versuchen Sie es mit Kaggle leicht maschinell
Versuchen Sie TensorFlow MNIST mit RNN
Versuchen Sie, Jupyter Hub mit Docker zu erstellen
Versuchen Sie es mit Folium mit Anakonda
Probieren Sie verschiedene Linux-Distributionen mit VMware ESXi Arm Edition aus und versuchen Sie es mit einem USB-Boot
Probieren Sie Deep Learning mit FPGA-Select-Gurken aus
Versuchen Sie es mit Python + Beautiful Soup
Lernen stärken 13 Probieren Sie Mountain_car mit ChainerRL aus.
Versuchen Sie es mit TensorFlow Part 2
Versuchen Sie es mit einer http-Eingabeaufforderung mit interaktivem http-Zugriff
Probieren Sie die Audiosignalverarbeitung mit librosa-Beginner aus
Versuchen Sie, Pferderennen mit Chainer vorherzusagen
Versuchen Sie, sich mit ONNX Runtime zu profilieren
SVM versucht maschinelles Lernen mit Scikit-Learn
Probieren Sie L Chika mit Himbeerpi
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Versuchen Sie, Jupyter mit VS-Code auszuführen
Verschiedene Feinabstimmungen mit Mobilenet v2
Versuchen Sie, Bitcoin mit Pythons Hashlib abzubauen
Anfänger RNN (LSTM) | Versuchen Sie es mit Keras
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Versuchen Sie, das Bild mit opencv2 zu verwischen
Versuchen Sie Common Representation Learning mit Chainer
Versuchen Sie, Audio mit M5 STACK auszugeben
Versuchen Sie Daten parallel zu Distributed TensorFlow
Versuchen Sie, Pythons networkx mit AtCoder zu verwenden
[PyStan] Probieren Sie Graphical Lasso mit Stan aus.
Behandelt verschiedene Datumsformate mit Pandas