2017-12-26 7 views
0

Ich möchte von der Bahn kratzen info und einem früheren Versuch hat mich, dass Docker gelehrt wäre nützlich gewesen mein Skript auf laufen, da ich das Skript auf Mac OS X entwickeln und es dann auf einem vm laufen oft ubuntu es oft gewonnen‘ t laufen, da die Abhängigkeiten auf Ubuntu nicht existieren und sich als schwer zu erstellen erwiesen haben.Entwickeln Scraping-Skript auf Docker-Bild - wie fehlende visuelle Browser zu überwinden?

Docker überwindet das Abhängigkeitsproblem, aber das führt mich jetzt zu einem anderen Problem, da ich das Skript im nicht kopflosen Modus auf dem Docker-Image entwickeln muss, um zu sehen, was es tut (oder zumindest denke ich, dass ich es tue) aber auf Docker glaube ich nicht, dass es möglich ist, den Browser im Nicht-Headless-Modus auszuführen.

Wie andere dieses Problem überwinden oder auf andere Weise um es zu bekommen?

Ich verwende python3, Selen auf diesem Bild, dass @Harald Norgren mich here mitaufbauten

Dies ist die Art von Skript, das ich renne, aber es hat nicht wirklich etwas noch tun, ich bin nur um es mehr Hintergrund in es hilfreich zu bieten.

import csv 
import time 
from selenium import webdriver 
import os 
import logging #logging.warning(data_store+file) 
import json 

project_dir = os.path.dirname(os.path.realpath(__file__)) 
data_store = project_dir+"/trends-data/" 
archive_folder = "archive" 
data_archive = data_store + archive_folder + "/" 

chromeOptions = webdriver.ChromeOptions() 
chromeOptions.add_argument("--headless") 
prefs = {"download.default_directory" : data_store} 
chromeOptions.add_experimental_option("prefs",prefs) 
driver = webdriver.Chrome(
    project_dir+'/chromedriver', 
    chrome_options=chromeOptions 
) 

driver.get('https://trends.google.co.uk/trends/explore?q=query'); 
time.sleep(5) 
driver.find_element_by_class_name("ic_googleplus_reshare").click() 
time.sleep(5) 
driver.find_element_by_class_name("csv-image").click() 
time.sleep(5) 
driver.quit() 

Antwort

0

Entwickeln Sie das Skript lokal in einem python3 Venv mit Kopf Chrome zuerst, dann können Sie es mit Docker laufen, wenn die visuellen Schaben keine Abhängigkeitsprobleme zu vermeiden, ist abgeschlossen.

Auch für Docker kopflos Chrome zu laufen, in Ihrem chromeOptions fügen auch dieses Argument:

chromeOptions.add_argument("no-sandbox") 
Verwandte Themen