[PYTHON] Erstellen Sie mit Selenium eine Capture-Erfassungsmaschine

So erstellen Sie einen Capture-Erfassungsserver in CentOS6 Ich habe versucht, Selen zu verwenden!

Richten Sie zunächst die virtuelle Anzeige so ein, dass Firefox auf der CUI ausgeführt werden kann. Die virtuelle Anzeige verwendet Xvfb

# yum -y install Xvfb firefox

Installieren Sie auch Firefox

Stellen Sie dann die UUID ein

# dbus-uuidgen > /var/lib/dbus/machine-id

Vorbereitung für die Arbeit mit Selen aus Python

# cd /usr/local/src
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
# python get-pip.py
# pip install selenium

Xvfb-Einstellungen und automatischen Start zulassen Erstellen Sie ein RC-Skript

# vi /etc/init.d/xvfb
#!/bin/bash
#
# chkconfig: - 91 35
# description: Xvfb
export DISPLAY="localhost:1.0"
# Source function library.
. /etc/init.d/functions

prog=$"Xvfb"

# Xvfb program
XVFB=/usr/bin/Xvfb
STATUS=":1 -screen 0 1024x768x8"
pidf=/var/run/xvfb.pid

start() {
    if [ -e $pidf ];
    then
        action $"Starting $prog: " /bin/false
        echo "$prog already started"
    else
        action $"Starting $prog: " /bin/true
        $XVFB $STATUS > /dev/null 2>&1 &
        echo $! > $pidf
    fi
}

stop() {
    if [ -e $pidf ];
    then
        action $"Stopping $prog: " /bin/true
        pid=`cat $pidf`
        test ! -z $pid && kill $pid && rm -f $pidf
    else
        action $"Stopping $prog: " /bin/false
        echo "$prog not running"
    fi
}

status() {
    if [ -e $pidf ];
    then
        echo "$prog (pid `cat $pidf`)Läuft..."
    else
        echo "$prog not running"
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 1
        start
        ;;
    status)
        status
        ;;
    *)
        echo $"Usave: $0 {start|stop|restart|status}"
        exit 1
esac

exit 0

Registrieren Sie das erstellte RC-Skript als Dienst

# chmod 755 /etc/init.d/xvfb
# chkconfig --add xvfb
# chkconfig xvfb on
# /etc/init.d/xvfb start

Stellen Sie die virtuelle Anzeige auf Umgebungsvariable ein

# vi /etc/profile

Fügen Sie Folgendes hinzu

export DISPLAY="localhost:1.0"

Erstellen Sie schließlich ein Capture-Erfassungsprogramm

$ vi cap.py
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re, sys, os
from PIL import Image

try:
    URL    = sys.argv[1]
    FILE   = sys.argv[2]
    DEVICE = sys.argv[3]
except:
    print('Not argv')
    sys.exit(1)

class Cap(unittest.TestCase):
    def setUp(self):
        profile = webdriver.FirefoxProfile()
        profile.set_preference("browser.download.useDownloadDir", True)
        profile.set_preference("browser.download.folderList", 2)
        profile.set_preference("browser.download.dir", os.path.dirname(FILE))
        profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream")
        profile.set_preference("browser.cache.disk.enable", False)
        profile.set_preference("browser.cache.memory.enable", False)
        profile.set_preference("browser.cache.offline.enable", False)
        profile.set_preference("network.http.use-cache", False)

        useragent = ""
        if DEVICE == "sp":
            useragent = "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A365 Safari/600.1.4"
        else:
            useragent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"

        profile.set_preference("general.useragent.override", useragent)

        self.driver = webdriver.Firefox(firefox_profile=profile)
        self.driver.implicitly_wait(100000)
        self.base_url = URL
        self.verificationErrors = []
        self.accept_next_alert = True

        if DEVICE == "sp":
            self.driver.set_window_size(320, 480)

    def test_cap(self):
        driver = self.driver

        driver.get(URL)
        time.sleep(3)
        driver.save_screenshot(FILE)

        # slice image
        # org_im = Image.open(FILE)
        # size   = org_im.size
        # new_im = None
        # height = 800 if size[1] > 800 else size[1]
        # new_im = org_im.crop((0, 0, size[0], height))
        # if DEVICE == "sp":
        #     new_im = org_im.crop((0, 0, size[0], height))
        # else:
        #     new_im = org_im.crop((0, 0, size[0], height))

        # new_im.save(FILE, "PNG")
        # os.chmod(FILE, 0666)
      
    def is_element_present(self, how, what):
        try:
            self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e:
            return False

        return True

    def is_alert_present(self):
        try:
            self.driver.switch_to_alert()
        except NoAlertPresentException, e:
            return False

        return True

    def close_alert_and_get_its_text(self):
        try:
            alert = self.driver.switch_to_alert()
            alert_text = alert.text
            if self.accept_next_alert:
                alert.accept()
            else:
                alert.dismiss()

            return alert_text
        finally:
            self.accept_next_alert = True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main(argv=sys.argv[:1])

Wie benutzt man

$ python cap.py [URL] [Zielpfad speichern] [Gerät(pc or sp)]

Wenn Sie die erfasste Aufnahme verarbeiten möchten Slice Bild Gonyo Gonyo unten

# yum install fonts-ja* ttfonts-ja*

Sammeln einer großen Anzahl von Hundebildern ♪ w

Recommended Posts

Erstellen Sie mit Selenium eine Capture-Erfassungsmaschine
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie eine maschinelle Lernumgebung
Erstellen Sie mit VirtualBox und Ubuntu eine Scikit-Lernumgebung für maschinelles Lernen
Erstellen Sie eine Deb-Datei mit Docker
Erstellen Sie eine Webanwendung mit Django
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Eine Geschichte über maschinelles Lernen mit Kyasuket
Erstellen Sie mit Docker-Compose eine schnelle API-Umgebung
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Erstellen Sie mit Neovim eine moderne Python-Umgebung
Erstellen Sie zusammen mit waf eine statische Bibliothek (.a)
Aufbau einer KI / maschinellen Lernumgebung mit Python
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
[EC2] So machen Sie mit Selen eine Bildschirmaufnahme Ihres Smartphones
Erstellen Sie einen lokalen Server mit einem einzeiligen Befehl [Mac]
Schaben mit Selen
Erstellen Sie eine Entwicklungsumgebung für die C-Sprache mit einem Container
Schaben mit Selen ~ 2 ~
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie ein billiges Zusammenfassungssystem mit AWS-Komponenten
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Schaben mit Selen
Beginnend mit Selen
[Memo] Erstellen Sie eine virtuelle Umgebung mit Pyenv + anaconda
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
Erstellen einer Python-Umgebung mit OSX Elcapitan
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Führen Sie eine Pipeline für maschinelles Lernen mit Cloud Dataflow (Python) aus.
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
Fühlen wir uns wie ein Materialforscher mit maschinellem Lernen
Iframe in Seite mit Selenium kann nicht bearbeitet werden
Ich habe einen einfachen RPA für die Anmeldung mit Selen ausprobiert
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
Erstellen einer Django-Umgebung für Win10 (mit virtuellem Speicherplatz)
Erstellen Sie mit Winsows 10 eine maschinelle Lernumgebung von Grund auf neu
Windows10 (x64) Erstellen Sie nativ eine maschinelle Lernumgebung
Erstellen einer numerischen Berechnungsumgebung mit pyenv und miniconda3
Erfolgreiches Schaben mit Selen
A4 Größe mit Python-Pptx
Screenshot mit Selen (Python Edition)
Erstellen Sie python3.x mit pyenv
Schaben mit Selen [Python]
Mit Dekorateur dekorieren
Erstellen Sie mit macOS sierra eine Python-Lernumgebung für maschinelles Lernen
Erstellen Sie eine maschinelle Lernumgebung auf einem Mac (pyenv, deeplearning, opencv).
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
Einführung in das maschinelle Lernen mit scikit-learn-Von der Datenerfassung bis zur Parameteroptimierung
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
Erstellen Sie eine App für maschinelles Lernen mit ABEJA Platform + LINE Bot
Erstellen Sie eine Go-Entwicklungsumgebung mit den Remote-Containern von VS Code
(Jetzt) Erstellen Sie eine GPU Deep Learning-Umgebung mit GeForce GTX 960
Holen Sie sich eine Liste der mit Python + Selen gekauften DMM-E-Books
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Erstellen Sie mit Django eine Bulletin-Board-App von Grund auf neu. (Teil 2)
Erstellen Sie mit VSCode x Remote Development x Pipenv eine komfortable Entwicklungsumgebung