我最近被介绍到 selenium 隐身,这似乎是一个最好的主意,但现在我正在努力包装一个 webdriver.Chrome 类。这是我使用 Webdriver 的方法。
class TopicsSpider(webdriver.Chrome):
def __init__(self, teardown=False):
# self.driver_path = driver_path
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
options.add_argument("--start-maximized")
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# options.add_argument('--headless')
# options.add_argument('blink-settings=imagesEnabled=false')
options.add_argument('--disable-gpu')
super(TopicsSpider, self).__init__(options=options)
def login(self):
pass
def get_users(self):
user_element = self.find_element(By.XPATH, '//div[@class="users"]'
user_element.get_atrribute("innerHTML")
def find_user_detail(self):
pass
如何确保隐身为我在 TopicsSpider 中的所有方法包装该类以使用隐身。因为在文档中它是这样包装的。
from selenium_stealth import stealth
driver = webdriver.Chrome(options=options, executable_path=r"C:\Users\DIPRAJ\Programming\adclick_bot\chromedriver.exe")
stealth(driver,
languages=["en-US", "en"],
vendor="Google Inc.",
platform="Win32",
webgl_vendor="Intel Inc.",
renderer="Intel Iris OpenGL Engine",
fix_hairline=True,
)
这是否意味着我可以在我访问这样的方法之前将它包装在我实例化我的类的地方?还是有另一种方法?
bot = TopicsSpider()
stealth(bot,
languages=["en-US", "en"],
vendor="Google Inc.",
platform="Win32",
webgl_vendor="Intel Inc.",
renderer="Intel Iris OpenGL Engine",
fix_hairline=True,
)
#then
bot.login()
bot.get_users()
???