Python脚手架系列-DrissionPage

记录DrissionPage模块使用中的一些常常复用的代码,持续更新…

接管谷歌浏览器

from DrissionPage import ChromiumPage, ChromiumOptions

co = ChromiumOptions().set_local_port(4249)
driver = ChromiumPage(addr_or_opts=co)

创建driver,如果浏览器已开启优先接管,需要设置谷歌浏览器的启动参数C:\Users\Gekte\AppData\Local\Google\Chrome\Application\chrome.exe --remote-debugging-port=4249 --remote-allow-origins=*设置端口需要对应。

获取tab

def get_tab(driver, html):
    tab_ids = driver.tab_ids
    for tab_id in tab_ids:
        this_tab = driver.get_tab(tab_id)
        if html in this_tab.url:
            return this_tab
    else:
        for tab_id in tab_ids:
            this_tab = driver.get_tab(tab_id)
            if this_tab.url in ["about:blank", "chrome://newtab/"]:
                return this_tab
    return driver.new_tab()

传入driver对象以及链接(支持链接的一部分),查找是不是有能复用的tab而无需创建新的。
如果需要获取多个tab对象,请使用下面的get_tabs函数防止重复获取

def get_tabs(driver, *urls):
    selectedTab = []
    tabs = []
    
    tab_ids = driver.tab_ids
    for url in urls:
        retTab = None
        
        for tab_id in tab_ids:
            this_tab = driver.get_tab(tab_id)
            if url in this_tab.url and this_tab not in selectedTab:
                retTab = this_tab
                break
        
        if not retTab:
            for tab_id in tab_ids:
                this_tab = driver.get_tab(tab_id)
                if this_tab.url in ["about:blank", "chrome://newtab/"] and this_tab not in selectedTab:
                    retTab = this_tab
                    break
        
        if not retTab:
            retTab = driver.new_tab()
        
        selectedTab.append(retTab)
        tabs.append(retTab)
    
    return tabs

# 使用 get_tabs 函数获取所有标签页
specTab, detailTab, manTab = get_tabs(driver, 'https://k.autohome.com.cn/spec/', 'https://k.autohome.com.cn/detail/', 'https://i.autohome.com.cn/')

chrome://newtab/对应谷歌新创建的页面,如果是其他浏览器请自行更换

执行Js代码

翻页到底部

driver.run_js("window.scrollTo({top: document.body.scrollHeight,behavior: 'smooth'});")
<think> 我们正在讨论的是如何添加DrissionPage.common的依赖。根据引用[1],提供了一个镜像文件的下载链接,但用户的问题是关于添加依赖的方法,而不是下载镜像。 通常在Python中添加依赖指的是通过pip安装包。DrissionPage是一个Python库,因此我们应该建议使用pip进行安装。 查看DrissionPage的官方文档(虽然没有直接给出引用,但根据常识),安装DrissionPage应该使用如下命令: pip install DrissionPage 但是,用户特别指出了“DrissionPage.common”,这可能是DrissionPage库中的一个子模块。在Python中,我们通常只需安装整个包,然后就可以导入其中的子模块。 因此,正确的步骤应该是: 1. 安装DrissionPage包 2. 在代码中导入common模块:from DrissionPage.common import ... 引用[2]和引用[3]分别提到了使用BrowserContext(可能是DrissionPage中的功能)和selenium,但这些与安装依赖没有直接关系。 所以,回答如下: </think> 在Python中添加`DrissionPage.common`依赖的方法如下(基于Python包管理标准): ### 安装DrissionPage库 `DrissionPage.common`是`DrissionPage`库的子模块,需先安装主库: ```bash pip install DrissionPage ``` ### 验证安装 ```python from DrissionPage.common import Actions, Keys # 导入常见工具类 print(Actions.__doc__) # 查看Actions类文档 ``` ### 镜像加速安装(可选) 若官方源下载慢,可使用引用[1]提供的镜像: 1. 下载镜像文件([迅雷链接](https://pan.xunlei.com/s/VOTAHP4cFdDHU6YFgRkb7_eSA1?pwd=9is2)) 2. 加载本地镜像: ```bash pip install ./drissionpage_env.tar ``` ### 使用示例(结合引用[2]) ```python from DrissionPage import ChromiumPage from DrissionPage.common import Actions browser = ChromiumPage() browser.get("https://www.amap.com") # 访问高德地图 browser.wait.load_start() # 等待页面加载(替代networkidle) # 使用common模块的键盘操作 actions = Actions(browser) actions.type("北京").enter().wait(2) browser.screenshot(path="map.png") ``` > **注意**: > - `DrissionPage.common`包含工具类(如`Actions`键盘鼠标操作、`Keys`键位常量等),无需单独安装 > - 普通功能只需`import DrissionPage`,需要具体工具时再导入子模块[^1][^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

d0ublecl1ck_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值