Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/srx-2000/swaiter
a programe to wait until the selenium element has loaded——selenium模拟器元素等待程序
https://github.com/srx-2000/swaiter
crawler selenium selenium-python
Last synced: 1 day ago
JSON representation
a programe to wait until the selenium element has loaded——selenium模拟器元素等待程序
- Host: GitHub
- URL: https://github.com/srx-2000/swaiter
- Owner: srx-2000
- License: mit
- Created: 2023-05-16T08:55:44.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-05-22T03:58:59.000Z (over 1 year ago)
- Last Synced: 2024-12-21T12:37:19.172Z (about 1 month ago)
- Topics: crawler, selenium, selenium-python
- Language: Python
- Homepage: https://pypi.org/project/Swaiter/
- Size: 5.86 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Swaiter
项目名字取自:Selenium+waiter
作为一个爬虫人,在使用selenium进行爬虫时,时长会遇到由于网络等原因导致无法及时获取一些元素,从而导致程序报错。此时聪明的小伙伴就会说了:加个`time.sleep()`不就好了。事实上这个方法确实可以解决绝大部分问题,但其也有一个比较尴尬的问题:到底要“睡”多久合适?长了耽误爬取效率,短了又怕没有作用,所以这个库就是为了解决上述问题而存在的。
## 安装
库的安装十分简单直接使用以下面的命令就可以安装成功了:
```bash
pip install Swaiter
```## 使用
使用方法主要分为两种:直接使用基础组件进行开发、继承并添加自己的检索函数
### 使用基础组件
这里给一个简单的使用基础组件的例子:
```python
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from waiter import Waiterif __name__ == '__main__':
# 获取selenium中驱动配置项(可省略)
driver_opt = Options()
url = "https://www.baidu.com/"
# 获取selenium中的driver对象
chrome_driver = Chrome(options=driver_opt)
chrome_driver.get(url=url)
# 利用获取到的driver对象创建Waiter对象
w = Waiter(chrome_driver)
# 传入xpath路径以及查询参数,检索input对象,并向其中填入查询参数
w.input_send_waiter(xpath="//input[@id='kw']", query="python")
# 利用xpath找到点击对象,模拟点击
w.click_waiter(xpath="//input[@id='su']")
# 在新的页面找到第一个链接,并获取其中的href属性值
result = w.elements_text_waiter(xpath="//h3/a[@tabindex=0]", attribute="href")
print(result)
``` 上述例子中,使用了3个基础的搜索函数,向这样的搜索函数,本库一共提供了5个,应该可以满足简单的模拟需求,当然如果你有一些特别的搜索需求,也可以尝试使用第二种方式。
### 继承并开发自己的检索函数
```python
from waiter import Waiter
from selenium.webdriver.common.by import Byclass MyWaiter(Waiter):
def __init__(self, driver, interval, is_track, is_log):
super().__init__(driver=driver, interval=interval, is_track=is_track, is_log=is_log)def _textarea_send(self, xpath, **kwargs):
self.driver.find_element(By.XPATH, xpath).send(kwargs)def textarea_send(self, xpath, **kwargs):
self.wait(func="_textarea_send", xpath=xpath, interval=5, **kwargs)
```## 环境
> window10、window11
>
> python>=3.8
>
> selenium>=4.9.0
>
> loguru>=0.7.0## 版本
#### 2023.5.22
**Version-1.0.4**
- 添加select组件的搜索器
- 添加获取组件所有选项
- 添加向select组件中输入值[1.0.4](https://pypi.org/project/Swaiter/1.0.4/)
#### 2023.5.16
**Version-1.0.3**
完成基础功能
[1.0.3](https://pypi.org/project/Swaiter/1.0.3/)