ERROR:process_reader_win.cc (123)] NtOpenThread: {Доступ запрещен} при попытке запустить загрузчик изображений на Python с использованием Selenium

#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.