Как перезапустить браузер Selenium после выхода? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь выйти, а затем перезапустить новый сеанс браузера с Selenium при обнаружении капчи, и я пока не уверен, почему не работает приведенный ниже код.

Он выходит из существующего драйвера , но после рекурсии browser.get() приводит к этой ошибке: ConnectionRefusedError: [Errno 61] Connection refused

Заранее благодарим за любые советы. Я включил только самые важные части кода ниже:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChains
path_to_chromedriver = '/Users/Myname/Desktop/a/chromedriver 2'

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
#options.add_argument('disable-infobars')
#options.add_argument('--disable-notifications')
options.add_argument('--disable-extensions')
browser = webdriver.Chrome(chrome_options=options, executable_path=path_to_chromedriver)
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'}

def get_page_info(url, browser = webdriver.Chrome(chrome_options=options, executable_path=path_to_chromedriver)):
    browser.get(url)
    try:
        body = browser.find_element_by_tag_name('body')
        if "been denied because we believe" in body.text:
            print("going to new session...")
            browser.quit()
            human(4,6) #time delay
            return winery_info(url)

Редактировать: я обычно не использовал бы эту тактику c, чтобы обойти капчу, но в моем случае использования это имеет смысл .

1 Ответ

0 голосов
/ 13 февраля 2020

Попробуйте использовать метод driver.delete_all_cookies () вместо закрытия браузера и повторного его открытия

edit: возможно, сайт блокирует ваш IP-адрес, я предлагаю вам использовать tor для автоматической смены IP-адреса, я дам вам это

import os
import time

os.system("killall tor")
os.system("tor &")
time.sleep(5)

#init driver
fp = webdriver.FirefoxProfile()
fp.set_preference("network.proxy.type", 1)
fp.set_preference("network.proxy.socks", "127.0.0.1")
fp.set_preference("network.proxy.socks_port", int("9050"))
fp.update_preferences()
browser = webdriver.Firefox(firefox_profile=fp) 

browser.get(...)
...
...
if captcha:
    os.system("killall tor")
    os.system("tor &")
    time.sleep(5)
    browser.get(...)
    # this will change your ip adress
    # You can also configure tor to change ip every 10 seconds by changing torrc file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...