几个月来,我一直在 Colab 中使用 Selenium 从 Flickr 下载视频。然而,从大约一周前开始,我的代码就停止工作了。
它开始在尝试打开的所有视频上收到502 Bad Gateway错误。因为我认为这是一个暂时的错误或类似的问题,所以我给了它几天并等待问题消失,但它没有消失。
我尝试更改 Selenium 的配置,尽管效果不大。我也尝试只使用 Urllib,但它给了我同样的错误。我的最后一张卡使用了代理,几乎可以工作,但无法实际下载加载的视频。
我避免在这里提问,但似乎这个问题已经打败了我。有人可以帮我吗?
这是我一直在使用的代码的主要部分:
!sudo apt update
!pip install chromedriver-autoinstaller selenium
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
from IPython.display import clear_output
from selenium import webdriver
import chromedriver_autoinstaller
import sys
import urllib, re
sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chromedriver_autoinstaller.install()
clear_output()
driver = webdriver.Chrome(options=chrome_options)
videos_folder = "/content/videos/"
os.mkdir(videos_folder)
def download_video_from_url(url, name):
driver.get(url)
html = driver.page_source
video_url = re.findall(r'"[^ ]*\.mp4[^ ]*"', html)
if (len(video_url) > 0):
video_url = video_url[0][1:-1]
try:
with open(videos_folder + name, "wb") as f:
f.write(urllib.request.urlopen(video_url).read())
return 1
except: return 0
else: return 0
这是我使用代理的代码:
!sudo apt update
!pip install chromedriver-autoinstaller selenium
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
from IPython.display import clear_output
from selenium import webdriver
import chromedriver_autoinstaller
import sys
import time
import urllib, re
sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chromedriver_autoinstaller.install()
clear_output()
driver = webdriver.Chrome(options=chrome_options)
videos_folder = "/content/videos/"
os.mkdir(videos_folder)
def download_video_from_url(url, name):
try:
driver.get("https://www.proxysite.com/")
element = driver.find_element(By.XPATH, '//*[@id="url-form-wrap"]/form/div[2]/input')
element.send_keys(url)
element.send_keys(Keys.ENTER)
html = driver.page_source
time.sleep(5)
element = driver.find_element(By.XPATH, '/html/body')
for i in range(5): element.send_keys(Keys.TAB)
for i in range(2): element.send_keys(Keys.ENTER)
return 1
except: return 0
你能解决这个问题吗?我也有同样的问题。