首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带条件参数的Python sub

带条件参数的Python sub
EN

Stack Overflow用户
提问于 2021-06-24 07:33:30
回答 2查看 18关注 0票数 0

我写了下面这段代码:

代码语言:javascript
复制
def scrapetable(link, xpath, browser=openchrome()):
    from selenium.webdriver.common.by import By
    browser.get(link)
    html = browser.find_element( By.XPATH , xpath).get_attribute('outerHTML')
    df = pd.read_html(html)
    browser.quit()
    return df[0]

如您所见,浏览器参数是可选的。

我只想在浏览器没有作为输入时执行browser.quit() (子浏览器自己打开浏览器)

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-24 07:37:25

不要将openchrome()设置为默认值。默认值是在定义函数时计算的,而不是在调用函数时计算的。

使用None作为默认值。然后,您可以检查是否提供了它,并有条件地关闭它。

代码语言:javascript
复制
def scrapetable(link, xpath, browser=None):
    need_to_close = False
    if not browser:
        browser = openchrome()
        need_to_close = True
    from selenium.webdriver.common.by import By
    browser.get(link)
    html = browser.find_element( By.XPATH , xpath).get_attribute('outerHTML')
    df = pd.read_html(html)
    if need_to_close:
        browser.quit()
    return df[0]
票数 2
EN

Stack Overflow用户

发布于 2021-06-24 07:38:43

您只需将默认参数更改为None

代码语言:javascript
复制
def scrapetable(link, xpath, browser=None):
    from selenium.webdriver.common.by import By
    if browser == None: 
        browser = openchrome()
    browser.get(link)
    html = browser.find_element( By.XPATH , xpath).get_attribute('outerHTML')
    df = pd.read_html(html)
    browser.quit()
    return df[0]

如果未定义,这将实例化浏览器,如果定义,将正确接收它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68108038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档