【发布时间】:2021-09-07 11:45:01
【问题描述】:
我正在尝试使用 selenium 和 firefox 来创建我想重复使用的浏览器的配置文件。我首先使用我希望它具有的扩展加载它,然后使用该配置文件作为参数调用一个函数以用于抓取。
profile = webdriver.FirefoxProfile()
profile.add_extension(extension='extension/1/path')
profile.add_extension(extension='extension/2/path')
def sele_scrape(profile,url):
options = Options()
options.headless = True
driver = webdriver.Firefox(firefox_profile=profile,options=options,executable_path='path/to/geckodriver')
driver.get(url)
source=driver.page_source
driver.quit()
sele_scrape(profile,'url1')
sele_scrape(profile,'url2')
网址的顺序或我使用的网址无关紧要。第二个总是导致这个错误:
File "(the python file for this project)", line 37, in <module>
sele_scrape(profile,'url2')
File "(the python file for this project)"
driver = webdriver.Firefox(firefox_profile=profile,options=options,executable_path='path/to/geckodriver')
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/firefox/webdriver.py", line 166, in __init__
capabilities.update(options.to_capabilities())
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/firefox/options.py", line 180, in to_capabilities
opts["profile"] = self._profile.encoded
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/firefox/firefox_profile.py", line 173, in encoded
self.update_preferences()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/firefox/firefox_profile.py", line 102, in update_preferences
self._write_user_prefs(self.default_preferences)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/firefox/firefox_profile.py", line 226, in _write_user_prefs
with open(self.userPrefs, "w") as f:
FileNotFoundError: [Errno 2] No such file or directory: '/var/folders/8j/lrckmwqs5bs9b4srrjbj6r5c0000gn/T/tmpiluv90lz/user.js'
这一行
FileNotFoundError: [Errno 2] No such file or directory: '/var/folders/8j/lrckmwqs5bs9b4srrjbj6r5c0000gn/T/tmpiluv90lz/user.js'
对我来说特别奇怪,因为我不知道它试图指的是什么或为什么。
任何帮助,甚至只是我可以查看的方向,将不胜感激!
【问题讨论】:
-
如果你想重复使用它,那么可能只创建一次
driver,不要quit()它。 -
可能当您
quit()时,它会删除配置文件 - 您必须重新创建配置文件。 -
如果我使用
close()而不是quit(),代码对我有用
标签: python selenium selenium-webdriver web-scraping selenium-firefoxdriver