ð¥ð¥ð10缺少硒方法!
#javascript #网络开发人员 #python #webscraping

Image description

介绍

根据我的经验,我创建了多个实用程序来简化机器人开发人员的硒。首先,让我向您描述这些实用程序,然后我将解释如何有效使用它们。

方法

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)

在用硒单击元素时,元素可以被弹出窗口,警报或其他元素拦截,从而导致 ElementClickInterceptedException10 错误。

要处理这种情况,您可以使用 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框架。