我正在Python 3.6和Selenium 3.141.0上使用Selenium进行网络抓取。
我需要安装WebDriver才能开始网络抓取,因此我在Word2Vec
的自定义目录中手动安装了ChromeDriver(scikit-learn
给出了ChromeDriverManager()
,当我尝试使用它时) 。在下载目录和创建文件夹之前,程序将验证目录是否已存在以及驱动程序是否在其中。另外,它将当前ChromeDriver目录添加到PATH变量。
执行该操作的程序代码为:
JSONDecodeError
当我在机器上运行它时,它运行得很好。但是当我在其他计算机上测试它时,会出现以下错误:
C:\Users\<username>\ChromeDriver
我对这些行进行了很多更改(此处引用的第一行是命令提示符向我显示的行):
if(browser == "Chrome"):
pathString = "C:\\Users\\"
user = str(os.getlogin())
pathString += user
pathString += "\\ChromeDriver"
pathP = Path(pathString)
a = 0
print("Verifying directory...")
try:
for file in os.listdir(pathP):
if file.endswith("driver.exe"):
a = 1
print("Driver found.")
except Exception:
os.mkdir(pathP)
print("Created directory " + str(pathP) + " to ChromeDriver.")
if a == 0:
print("Downloading ChromeDriver.")
r = requests.get(r"https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_win32.zip")
print("ChromeDriver downloaded.")
z = zipfile36.ZipFile(io.BytesIO(r.content))
z.extractall(path=pathString)
print("ChromeDriver extracted.")
z.__del__()
z.close()
os.environ["PATH"] += os.pathsep + pathString
print("Added ChromeDriver path to PATH variable.")
pathString += "\\chromedriver.exe"
pathP = Path(pathString)
driver = webdriver.Chrome(executable_path=pathP)
return driver
将反斜杠更改为其ASCII值并添加到字符串(通过FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\<username>\\ChromeDriver'
),通过 pathString = "C:\\Users\\"
user = str(os.getlogin())
pathString += user
pathString += "\\ChromeDriver"
将字符串转换为ASCII编码,将字符串转换为chr()
对象,将反斜杠更改为普通斜杠,因为Python会即时修复它,依此类推。
我无法使用pathString.encode()
,因为我仍然不知道如何使用它。为什么一个人的Windows不处理双反斜杠而我的却处理呢?以及如何解决?