我写了下面这段代码:
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() (子浏览器自己打开浏览器)
我该怎么做呢?
发布于 2021-06-24 07:37:25
不要将openchrome()设置为默认值。默认值是在定义函数时计算的,而不是在调用函数时计算的。
使用None作为默认值。然后,您可以检查是否提供了它,并有条件地关闭它。
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]发布于 2021-06-24 07:38:43
您只需将默认参数更改为None
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]如果未定义,这将实例化浏览器,如果定义,将正确接收它。
https://stackoverflow.com/questions/68108038
复制相似问题