Очистите несколько страниц с помощью Selenium VS SELE-Detecting-Site Python
Мне месяц с кодированием и пару дней с Selenium.
Этот сайт чрезвычайно упрямый, и мне удалось заставить его работать один раз, и не более, хотя код не был изменен. Он продолжает обнаруживать меня после первой страницы.
Я попытался обойти несколько способов: [Start code]
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
Это варианты -
option=webdriver.ChromeOptions()
option.add_argument('--incognito')
option.add_argument('--disable-extensions')
option.add_argument('--profile-directory=Default')
option.add_argument('--disable-plugins-discovery')
browser=webdriver.Chrome(chrome_options=option)
Метод, который я нашел потенциально работающим:
for page in range(1,int(last_page),1):
print(base_url+str(page)+base_search)
browser.get(base_url+str(page)+base_search)
grabber()
browser.quit()
(Функция "grabber()" - это рабочая функция, которая захватывает нужные мне данные)
Хотя - по-видимому, как только вы выйдете из браузера и попытаетесь открыть другой браузер в том же сеансе - сеанс завершается сбоем ([WinError 10061]). Это могло бы быть круто, так как я получаю новый UA, когда открывается браузер, и я получаю отсканированную страницу, так как я все еще не обнаружен.
Таким образом, каждый UserAgent дает мне 1 страницу для очистки, а затем он обнаруживается и сжигается.
Изучение здесь немного заставило меня изменить "call_function.js":
function getPageCache(opt_doc, opt_w3c) {
var doc = opt_doc || document;
var w3c = opt_w3c || false;
//var key = '$cdc_asdjflasutopfhvcZLmcfl_';
var key = '$newplacetostorecache_';
if (w3c) {
if (!(key in doc))
doc[key] = new CacheWithUUID();
return doc[key];
} else {
if (!(key in doc))
doc[key] = new Cache();
return doc[key];
}
}
Не сработало
Итак, в последний раз я попробовал этот последний метод судного дня:
import time
import string
import random
KEY_LEN = 20
def base_str():
return (string.ascii_letters+string.digits)
def key_gen():
keylist = [random.choice(base_str()) for i in range(KEY_LEN)]
return ("".join(keylist))
for page in range(1,int(last_page),1):
print(base_url+str(page)+base_search)
browser.get(base_url+str(page)+base_search)
grabber()
option.add_argument('--user-agent=' + key_gen())
print('user agent updated successfully')
И это сработало!! Этим утром я смог продвинуться примерно на 12 страниц из общего количества около 20 (прежде чем загрузка страницы заняла слишком много времени, и сессия закончилась)
Но пару часов спустя он больше не работал, я снова был обнаружен после захвата первой страницы, только чтобы столкнуться с CAPTCHA 2-й страницы
Есть ли еще какие-то методы, которые я должен определенно попробовать, чтобы наконец-то очистить данные этого сайта?