安裝chromedriver
下載
chromedriver的版本一定要與Chrome的版本一致,不然就不起作用。
有兩個下載地址:
1、http://chromedriver.storage.googleapis.com/index.html
2、CNPM Binaries Mirror
當(dāng)然,你首先需要查看你的Chrome版本,在瀏覽器中輸入chrome://version/
?放chromedriver在chrome安裝目錄
?默認(rèn)目錄一般為:C:\Program Files\Google\Chrome\Application
獲取網(wǎng)頁源碼
from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
browser.get(a[0])#填url
time.sleep(3)
b=browser.page_source
print(b)
常用配置參數(shù):
# 添加UA
options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')
# 指定瀏覽器分辨率
options.add_argument('window-size=1920x3000')
# 谷歌文檔提到需要加上這個屬性來規(guī)避bug
chrome_options.add_argument('--disable-gpu')
# 隱藏滾動條, 應(yīng)對一些特殊頁面
options.add_argument('--hide-scrollbars')
# 不加載圖片, 提升速度
options.add_argument('blink-settings=imagesEnabled=false')
# 瀏覽器不提供可視化頁面. linux下如果系統(tǒng)不支持可視化不加這條會啟動失敗
options.add_argument('--headless')
# 以最高權(quán)限運行
options.add_argument('--no-sandbox')
# 手動指定使用的瀏覽器位置
options.binary_location = r"C:Program Files (x86)GoogleChromeApplicationchrome.exe"
#添加crx插件
option.add_extension('d:crxAdBlock_v2.17.crx')
# 禁用JavaScript
option.add_argument("--disable-javascript")
# 設(shè)置開發(fā)者模式啟動,該模式下webdriver屬性為正常值
options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 禁用瀏覽器彈窗
prefs = {
'profile.default_content_setting_values' : {
'notifications' : 2
}
}
options.add_experimental_option('prefs',prefs)
# 添加代理 ip
options.add_argument("--proxy-server=http://XXXXX.com:80")
driver = webdriver.Chrome(chrome_options=chrome_options)
XPATH獲取元素
content=browser.find_element(value='//*[@id="img-content"]',by=By.XPATH)
print(content.text)
隱藏chrome
chrome_opts = webdriver.ChromeOptions()
chrome_opts.add_argument("--headless")
browser = webdriver.Chrome(options=chrome_opts)
最小化瀏覽器窗口
browser = webdriver.Chrome(options=chrome_opts)
browser.minimize_window()
點擊元素 寫入元素 生成隨機字符串
ming=''.join(random.choice(string.ascii_letters+ string.digits) for _ in range(12))
print(ming)
browser.find_element(value='//*[@id="name"]', by=By.XPATH).send_keys(ming)
browser.find_element(value='//*[@id="email"]', by=By.XPATH).send_keys(ming+'@qq.com')
browser.find_element(value='//*[@id="imtype"]', by=By.XPATH).click()
time.sleep(1)
browser.find_element(value='/html/body/div[1]/div/section/div/div[6]/div/div/ul/li[2]/a', by=By.XPATH).click()
點擊第一個谷歌搜索結(jié)果
browser.find_element(value='//*[@id="rso"]/div[1]/div/div[1]/div/div/div[1]/div/a/h3', by=By.XPATH).click()
Python往文件追加內(nèi)容
f = open('test.txt', 'a') f.write('Hello Everyone\n') f.close()
Selenium設(shè)置頁面超時時間-快速終止頁面加載
當(dāng)使用Selenium爬取一些頁面時,有些頁面加載速度特別慢,而我們又不需要等待頁面完全加載完畢。
此時可以通過driver.set_page_load_timeout()
來設(shè)置頁面超時時間。
捕獲異常,并執(zhí)行js腳本window.stop()
即可實現(xiàn),代碼如下。
from selenium import webdriver
driver = webdriver.Chrome()
driver.set_page_load_timeout(3)
try:
driver.get('https://hk.louisvuitton.com/zht-hk/homepage')
print('finish load ....')
except Exception:
driver.execute_script('window.stop()')
print(driver.title)
finally:
driver.quit()
pj網(wǎng)頁防止開發(fā)者模式
使用 CDP(Chrome Devtools-Protocol),您可以在 JS 文件(檢測器)加載框架之前運行代碼。因此,使用這些代碼刪除“webdriver True”屬性:
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
關(guān)鍵代碼:
from selenium.webdriver import Chrome
driver = Chrome('D://chromedriver.exe')
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
driver.get('http://pythonlearner.com')
但是,如果您現(xiàn)在將 Chrome 升級到 88。上面提到的方法將毫無用處。幸運的是,我們?nèi)匀挥幸粋€解決方案(添加此代碼)
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
截取數(shù)據(jù)請求
from seleniumwire import webdriver
browser = webdriver.Chrome("chromedriver.exe")
browser.request_interceptor = interceptor_request
browser.response_interceptor = interceptor_response
browser.get("http://localhost:8088/inner/t4")
for request in browser.requests:
print(request.url)
print(request.response.body)
Selenium-處理滑塊驗證碼-openCV識別
opencv基礎(chǔ)操作
#opencv基礎(chǔ)操作
import cv2
#圖像的基本操作
#圖像的讀取
#img cv2.imread(''")
#查看對應(yīng)的像素
#img[120,120]
img[120,120]=[255,255,0]
#修改圖像尺寸
resized=cv2.resize(img,(960,540))
#修改窗口尺寸
cv2.namedWindow("img",0)
cv2.resizeWindow("img",640,480)
#圖像展示
#cv2.imshow('img',img)
#圖像寫入
cv2.imwrite('',img)
cv2.imencode('.jpg',img)[1].tofile('')
#等待用戶按下任意鍵的時間
cv2.waitKey()#括號里的是時間,單位是ms
#銷毀窗口
cv2.destroyAlLWindows()#銷毀當(dāng)前所有正在顯示的窗口
#1、隱藏Chrome 正受到自動測試軟件的控制 chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) browser = webdriver.Chrome(options=chrome_options)
F12進入調(diào)試界面總是停留在Paused in debugger解決辦法
有時候我們在某個界面點擊F12后,頁面會出現(xiàn)下面這樣的按鈕,導(dǎo)致無法對界面進行實時操作:
我使用的是edge瀏覽器,解決辦法如下:
點擊上面的禁止按鈕,再點擊一下頁面上下面的按鈕就可以了!
Playwright 為現(xiàn)代 web 應(yīng)用提供了跨瀏覽器、快速且可靠的端到端的測試能力。 | Playwright 中文文檔 | Playwright 中文網(wǎng)
參考:selenium 安裝與 chromedriver安裝 - Rogn - 博客園 (cnblogs.com)
python 用seleniumwire模塊獲取網(wǎng)站登陸后的請求頭token字符串?dāng)?shù)據(jù)_井底 之魚的博客-CSDN博客
【淺記】使用seleniumwire滑動極兔滑塊_seleniumwire拖動滑動_Docda的博客-CSDN博客
https://www.cnblogs.com/qlqwjy/p/16519286.html
python selenium 保存網(wǎng)頁緩存,保持登錄?https://www.cnblogs.com/royfans/p/16714805.html文章來源:http://www.zghlxwxcb.cn/news/detail-425109.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-425109.html
到了這里,關(guān)于python selenium playwright庫使用教程 破解網(wǎng)頁防止開發(fā)者模式 截取數(shù)據(jù)請求 隱藏chrome的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!