介绍
根据我的经验,我创建了多个实用程序来简化机器人开发人员的硒。首先,让我向您描述这些实用程序,然后我将解释如何有效使用它们。
方法
1)get_by_current_page_referrer(link, wait=None)
:
driver.get
的替代方法是get_by_current_page_referrer(link, wait=None)
实用程序。使用driver.get
时,document.referrer
属性保持空,表明您直接在搜索栏中输入了页面URL,这可能会引起对机器人检测系统的怀疑。
通过使用get_by_current_page_referrer(link, wait=None)
,您可以模拟访问,就像您通过单击链接到达页面一样。这种方法创造了更自然,更不可检测的浏览行为。
通常,当导航到网站的内部页面时,建议用get_by_current_page_referrer
替换driver.get
。此外,您还可以选择使用可选的wait
参数。
driver.get_by_current_page_referrer("https://example.com")
2)js_click(element)
:
在用硒单击元素时,元素可以被弹出窗口,警报或其他元素拦截,从而导致 ElementClickInterceptedException
10 错误。
要处理这种情况,您可以使用 js_click
方法。此方法使您可以使用JavaScript单击元素,绕过弹出窗口或警报中的任何截距。
通过使用 js_click
方法,您可以确保单击操作的执行顺利而不会截获。
button = driver.get_element_or_none_by_selector(".button")
driver.js_click(button)
3)get_cookies_and_local_storage_dict()
:
此方法返回一个包含两个键的字典“ cookies”和“ local_storage”,每个键都包含cookie和local存储的字典。您可以通过将它们存储在JSON文件中。
site_data = driver.get_cookies_and_local_storage_dict()
4)add_cookies_and_local_storage_dict(self, site_data)
:
此方法同时将Cookie和本地存储数据添加到当前网站。
site_data = {
"cookies": {"cookie1": "value1", "cookie2": "value2"},
"local_storage": {"name": "John", "age": 30}
}
driver.add_cookies_and_local_storage_dict(site_data)
5)organic_get link, wait=None)
:
此方法遵循一个两步的过程:它首先加载Google主页,然后导航到指定的链接。这种方法与人们通常访问网站的方式非常相似,从而导致更人性化的行为并减少了被检测到的机器人的机会。
driver.organic_get("https://example.com")
6)local_storage
此属性从bose.drivers.local_storage
模块返回了LocalStorage
类的实例。此类用于以易于使用的方式与浏览器的本地存储进行交互。
local_storage = driver.local_storage
# Set an item in the Browser's Local Storage
local_storage.set_item('username', 'johndoe')
# Retrieve an item from the Browser's Local Storage
username = local_storage.get_item('username')
7)save_screenshot(filename=None)
使用此方法将当前网页的屏幕截图保存到tasks/
目录中的文件。除非提供自定义文件名,否则屏幕截图的文件名是根据当前日期和时间生成的。
driver.save_screenshot()
8)short_random_sleep()
和long_random_sleep()
:
这些方法随机入睡,在2到4秒(短)之间或6到9秒之间(长)。您可以这样使用它们:
driver.short_random_sleep()
driver.long_random_sleep()
9)get_element_or_none(xpath, wait=None)
,Grandde24。
这些方法根据不同的标准在页面上找到Web元素。如果存在,它们会返回Web元素,或者None
不存在。您也可以将秒数传递给等待元素出现。您可以像这样使用它们
# find an element by xpath
element = driver.get_element_or_none("//div[@class='example']", 4)
# find an element by CSS selector
element = driver.get_element_or_none_by_selector(".example-class", 4)
# find an element by ID
element = driver.get_element_by_id("example-id", 4)
# find an element by text
element = driver.get_element_or_none_by_text("Example text", 4)
# find an element by partial text
element = driver.get_element_or_none_by_text_contains("Example", 4)
# find an element with attribute name = "email"
element = driver.get_element_or_none_by_name("email", 4)
10)is_in_page(target, wait=None, raise_exception=False)
此方法检查浏览器是否在指定页面中。它将继续检查指定的时间(如果提供等待),并在未找到目标时返回False。如果rise_exception为真,则如果找不到页面,它将增加例外。
is_in_page = driver.is_in_page('example.com', wait=10, raise_exception=True)
如何使用这些公用事业?
使用这些实用程序的最简单方法是利用Bose框架,这是旨在简化开发人员的机器人开发的第一个框架。
Bose框架会自动将这些实用程序方法纳入硒驱动器。您可以在 https://www.omkar.cloud/bose/docs/tutorial/ 中学习如何使用Bose框架。
。