Как я могу проверить наличие веб-страниц с помощью скрипта, запущенного в Google Cloud Run? - PullRequest
1 голос
/ 12 июля 2020

Я следую этому руководству , чтобы узнать, как использовать безголовый Chrome в облаке Google, чтобы запустить сценарий, чтобы узнать, существуют ли какие-то страницы.

Как я не установлено Docker Я пробовал:

mikempc3@instance-1:~$ gcloud builds submit --tag gcr.io/my_service
ERROR: (gcloud.builds.submit) HTTPError 403: Insufficient Permission

Файл, который я хочу запустить, это:

import selenium

from collections import defaultdict
import json

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import ElementClickInterceptedException

import time

from selenium.common.exceptions import NoSuchElementException

import pandas as pd
import numpy as np

df_red = pd.read_csv("tickers_september_2017_updated.csv")

tradable = []
for ticker in df_red['Ticker']:
    print(ticker)
    location = "https://www.etoro.com/markets/" + ticker.lower() 
    driver.get(location) # vamaos al ticker
    time.sleep(2)
    current_url = driver.current_url # almacenamos la dirección donde realmente nos lleva
    if current_url == location: # Si sigue siendo el mismo, significa que el teletipo es negociable.
        tradable.append(ticker) 

Я тоже пробовал с запросом, но страницы всегда существуют, да не перенаправлять, он отвечает на 200 Ok и действительный html, но этот html содержит iframe, и я подозреваю, что содержимое iframe динамически загружается js. Если так, то я боюсь, что сделать это без селена будет слишком сложно.

Обновление

Я нашел репозиторий со скриптами, которые, кажется, устанавливают необходимые вещи в запустить селен. Казалось, это хороший способ проверить, существуют ли страницы. Итак, я выполнил инструкции и получил ожидаемый результат, но когда я хочу запустить свой собственный сценарий, у меня появляется следующая ошибка:

mikempc3@instance-1:~$ python3 tradable.py 
Traceback (most recent call last):
  File "tradable.py", line 26, in <module>
    driver = webdriver.Chrome()
  File "/home/mikempc3/.local/lib/python3.5/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/home/mikempc3/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/mikempc3/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/mikempc3/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/mikempc3/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_respons
e
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752),platform=Linux 4.9.0-12-amd64 x86_64)

Обновление 2

Теперь я начинаю с Docker

...