selenium
pip install selenium
- undetected_chromedriver
- 安装浏览器驱动(各个浏览器的驱动是不一样的,推荐chrome)
- https://registry.npmmirror.com/binary.html?path=chromedriver/
- 查看自己chrome浏览器的版本,我的是: 96.0.4664.45
- 注意事项:如果找不到对应的版本,就往前面推,找最近的版本即可
- 比如: 45的版本找不到,就找44,44找不到就找43,以此类推...
- 有Linux版,苹果版,和 windows版,我下载的是: chromedriver_win32.zip(64位的系统也选这个...)
- selenium 使用3的版本,若使用4的版本,以下demo代码需更改
- urllib3 使用1.26.2的版本,新版的urllib3与 selenium3版本不兼容,也会报错
from selenium.webdriver import Chrome
web = Chrome(executable_path='chromedriver.exe')
url = 'http://www.baidu.com'
web.get(url)
print(web.title)
- 简化写法,可以把
chromedriver.exe
放到python根目录
(和python.exe
位置相同),让脚本自动去找
from selenium.webdriver import Chrome
web = Chrome()
url = 'http://www.baidu.com'
web.get(url)
print(web.title)
拉勾网招牌
实例
import time
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
web = Chrome()
url = 'https://www.lagou.com/'
web.get(url)
x_btn = web.find_element_by_xpath('//*[@id="cboxClose"]')
x_btn.click()
time.sleep(2)
web.find_element_by_xpath('//*[@id="search_input"]').send_keys('python',Keys.ENTER)
import time
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
web = Chrome()
url = 'https://www.lagou.com/'
web.get(url)
x_btn = web.find_element_by_xpath('//*[@id="cboxClose"]')
x_btn.click()
time.sleep(2)
web.find_element_by_xpath('//*[@id="search_input"]').send_keys('python',Keys.ENTER)
divs = web.find_elements_by_xpath('//*[@id="jobList"]/div[1]/div')
time.sleep(2)
web.execute_script("""
var a = document.getElementByClassName("un-login-banner")[0];
a.parentNode.removeChild(a);
""")
for div in divs:
title = div.find_element_by_xpath('.//*[@id="openWinPostion"]')
web.switch_to_window(web.window_handles[-1])
job_detail = web.find_element_by_xpath('xxxx')
text = job_detail.text
print(text)
time.sleep(1)
web.close()
web.switch_to_window(web.window_handles[0])
web.quit()
iframe
案例
from selenium.webdriver import Chrome
web = Chrome()
web.get('http://www.wbdy.tv/play/30288_1_1.html')
iframe = web.find_elements_by_xpath('//*[id="mplay"]')
web.switch_to_frame(iframe) # 进入ifram
# .......
web.switch_to.parent_frame() # 跳出ifram
import time
from selenium.webdriver import Chrome
from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.options import Options
web = Chrome()
sel = web.find_element_by_xpath('//*[@id="OptionDate"]')
sel_new = Select(sel)
for i in range(len(sel_new.options)):
sel_new.select_by_index(0)
trs = web.find_element_by_xpath('//*xxx')
for tr in trs:
print(tr.text)
page_source = web.page_source
- 把
selenium
配置成无头浏览器
(即隐藏浏览器)
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
opt = Options()
opt.add_argument('--headless')
opt.add_argument('--disable-gpu')
web = Chrome(options=opt)
web.get('http://www.baidu.com')
print(web.title)
处理验证码
from selenium.webdriver import Chrome
web = Chrome()
web.get('https://www.chaojiying.com/user/login/')
png = web.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/div/img').screenshot_as_png
png = web.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/div/img').screenshot(filename)
png = web.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/div/img').screenshot_as_base64
print('完成')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具