前言
關于上次發(fā)布的文章《【Python爬蟲 ? selenium】selenium4新版本使用指南》很多人反饋說自動獲取的驅動會導致閃退,本次文章給出詳細配置。
首先說一下大家閃退的問題。我在低版本的python中,安裝selenium,發(fā)現(xiàn)安裝的是舊版本,并不是selenium4的版本,就導致用法還是selenium3,此時用我之前提供的selenium4的代碼必然會報錯,因此在本次文章中將會給出各種驅動的selenium3和selenium4版本的代碼,供大家直接cv。
其次,本次文章還要讓大家學會如何排錯。selenium閃退原因其實很好排查的,一般來說,運行報錯就會有提示,這些東西在正文中將會說明。
一、安裝驅動
當前環(huán)境配置,python=3.10,
注意,確保你的python版本是高版本,低版本會自動安裝selenium3,高版本會自動安裝selenium4,如果你不明白你安裝的selenium版本是多少,建議你使用
pip list
命令來查看一下
我是用的python3.10安裝了默認是4.7版本的selenium。
pip install webdriver-manager
然后安裝selenium
pip install selenium
二、使用步驟
本次以Edge為例,因為我目前只有Edge是空閑的。
1.導入包
代碼如下:
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager
2.生成驅動
代碼如下:
driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))
3.打開網(wǎng)站
我這里以打開我的博客為例,注意這里要做延時,否則閃退。
driver.get('https://blog.csdn.net/weixin_47754149?spm=1010.2135.3001.5343')
sleep(10000)
運行效果圖如下
運行10秒后會自動關閉,說明確實是沒有問題的。
二、selenium閃退問題處理
selenium閃退正常情況下是有兩種問題導致的,一是selenium和你的代碼版本不兼容,或者說你代碼寫錯了,二是瀏覽器閃了一下就沒了,這種情況不是你代碼寫錯了,而是瀏覽器打開的時候代碼執(zhí)行完了。你只需要做一點適當?shù)难舆t即可。因此這里展開對第一種情況進行處理。
1. selenium版本與代碼不匹配
這部分是最有可能遇到的錯誤。通常來說,你安裝selenium的時候會自動識別你的python版本進行安裝對應的版本,比如你用的python3.6,就會默認安裝selenium3,如果你用的python3.10就會自動安裝selenium4,因此確定你安裝的selenium是哪個版本是非常重要的。
首先要確認你的selenium版本,使用以下命令
pip list
然后就會輸出你當前環(huán)境中的包和版本號其中需要找你的selenium,查看是哪個版本的
然后根據(jù)你對應版本號來看你應該寫selenium3還是selenium4的代碼,這樣就不閃退了。
2. selenium代碼異常
這部分閃退問題基本上就說明了你代碼功底不夠扎實,這種問題屬于語法錯誤,因為python是邊解釋邊執(zhí)行的,代碼正確的會執(zhí)行,錯誤代碼及以后就不執(zhí)行了,而且一些沒有的字段和屬性在開發(fā)中不會標注出來,所以新手是不好看出來的。
這種問題我的建議是使用IDE來進行開發(fā),我推薦使用visual studio code,然后安裝python插件,在狀態(tài)欄那里選擇你的python版本
此時代碼就會有提示了,如果你寫的代碼有問題就會在這里顯示出來
有點開發(fā)經驗的就直接加個異常處理就好了,就不細說了。
三、代碼示例
此處代碼專供cv使用,讓你在cv的時候更爽,更直接。文章來源:http://www.zghlxwxcb.cn/news/detail-798974.html
1.selenium4代碼示例
1. Chrome
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
2. Chromium
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromiumService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(service=ChromiumService(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))
3. Brave
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as BraveService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(service=BraveService(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()))
4. Firefox
# selenium 4
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
5. IE
# selenium 4
from selenium import webdriver
from selenium.webdriver.ie.service import Service as IEService
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(service=IEService(IEDriverManager().install()))
6. Edge
# selenium 4
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))
7. Opera
# selenium 3 & 4
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager
driver = webdriver.Opera(executable_path=OperaDriverManager().install())
2.selenium3代碼示例
1. Chrome
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
2. Chromium
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())
3. Brave
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install())
4. Firefox
# selenium 3
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
5. IE
# selenium 3
from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(IEDriverManager().install())
6. Edge
# selenium 3
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(EdgeChromiumDriverManager().install())
7. Opera
# selenium 3 & 4
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager
driver = webdriver.Opera(executable_path=OperaDriverManager().install())
3. 提供的操作框架
import os
import requests
from requests import Response
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.download_manager import WDMDownloadManager
from webdriver_manager.core.http import HttpClient
from webdriver_manager.core.logger import log
class CustomHttpClient(HttpClient):
def get(self, url, params=None, **kwargs) -> Response:
"""
在這里添加你的操作,session,代理等
"""
log("這些將會被自定義的http客戶端調用")
return requests.get(url, params, **kwargs)
def test_can_get_chrome_driver_with_custom_http_client():
http_client = CustomHttpClient()
download_manager = WDMDownloadManager(http_client)
path = ChromeDriverManager(download_manager=download_manager).install()
assert os.path.exists(path)
總結
以上就是本期文章的所有內容了,主要是處理大家在使用自動獲取驅動的時候遇到的問題,盡管問題總結不是很全面,但是已經觸及到根本的方面了,那就是selenium和python版本一定要匹配才能安裝selenium4。其次就是將一些selenium的代碼貼出來便于大家直接cv,我相信這是很有用的,當你看到這篇文章發(fā)現(xiàn)可以直接cv那必然是很舒服的,我也是這么想的。
‘
如果說你遇到了問題,并且不是以上這種的問題,那么請直接私信我。文章來源地址http://www.zghlxwxcb.cn/news/detail-798974.html
到了這里,關于【Python爬蟲 ? selenium】selenium4新版本自動獲取驅動的常見問題的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!