#python #selenium #google-chrome #selenium-webdriver #selenium-chromedriver
#python #selenium #google-chrome #selenium-webdriver #selenium-chromedriver
Вопрос:
код работает нормально, пока не попытается получить доступ к каталогу. приветствуется любой ввод, спасибо
Вот код:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
import ast
import requests
import urllib.request
from bs4 import BeautifulSoup as Soup
opts = Options()
opts.add_argument("user-agent=chrome/23.0.1271")
driver = webdriver.Chrome("./chromedriver.exe")
url = 'https://s.aolcdn.com/os/ab/_cms/2020/09/09081722/568224.jpg'
directory = 'RAW'
FILETYPE = '.jpg'
r = requests.get(url,allow_redirects=True)
def find_urls(url):
driver.get(url)
wait = input('loading...lmao')
page = driver.page_source
soup = Soup(page,'lxml')
images = soup.find_all('img',{"src":True})
all_images = []
for image in images:
image_src = image['src']
print(image_src)
urllib.request.urlretrieve(image_src)
Images = find_urls(url)
def save_img(Image,directory):
if not os.path.isdir(directory):
os.mkdir(directory)
for i,link in enumerate(url):
path = os.path.join(directory,'(:06).jpg'.format(i))
try:
ulib.urlretrieve(link,path)
except:
print('Failed:')
save_img(Images,directory)
Я думаю, может быть, как я получаю доступ к каталогу, но у меня заканчиваются попытки, я проверил папку, чтобы убедиться, что она запущена от имени администратора.
Ответ №1:
Это сообщение об ошибке…
ERROR:process_reader_win.cc(123)] NtOpenThread: {Access Denied}
…подразумевает, что поток, инициированный ChromeDriver, не смог прочитать системный ресурс, поскольку доступ был запрещен.
Основная причина
Распространенной причиной отказа в доступе является запуск Chrome от имени root
пользователя ( administrator
) в Linux. Хотя эту проблему можно обойти, передав --no-sandbox
флаг при создании сеанса WebDriver, такая конфигурация не поддерживается и крайне не рекомендуется. Вам необходимо настроить свою среду для запуска Chrome в качестве обычного пользователя.
Дополнительное рассмотрение
Убедитесь, что:
- Selenium обновлен до текущей версии 3.141.59.
- ChromeDriver обновлен до текущего уровня ChromeDriver версии 84.0.
- Chrome обновлен до текущего уровня версии Chrome 84.0. (согласно примечаниям к выпуску ChromeDriver версии 84.0)
- Если ваша базовая версия веб-клиента слишком старая, удалите ее и установите последнюю GA и выпущенную версию веб-клиента.
- Очистите свое проектное рабочее пространство с помощью вашей IDE и перестройте свой проект только с необходимыми зависимостями.
- Выполните перезагрузку системы.
- Выполните свой запрос
@Test
как некорневой пользователь. - Всегда вызывайте метод
driver.quit()
внутриtearDown(){}
, чтобы корректно закрыть и уничтожить экземпляры WebDriver и Web Client.