首页 > 解决方案 > 如何通过在 Google Cloud Run 中启动的脚本检查网页是否存在?

问题描述

我正在按照本教程学习如何在 Google 云中使用无头 Chrome 以运行脚本以查看是否存在某些页面。

由于我没有安装 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 动态加载的。如果是这样,恐怕没有硒就太复杂了。

更新

我找到了一个包含脚本的存储库,这些脚本似乎安装了运行 selenium 所需的东西。这似乎是检查页面是否存在的好方法。因此,我按照说明进行操作并获得了预期的输出,但是当我想启动自己的脚本时,出现以下错误:

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

标签: python-3.xseleniumgoogle-cloud-platformgoogle-cloud-run

解决方案


推荐阅读