一. 痛点
运维侠小白有下面烦恼,听说deepseek可以帮助提升学习python的效率,可是deepseek给的代码也报错,怎么办?
deepseek生成的代码也有可能报错,例如:
⏰执行报错:由提示得知,是少导入需要的模块,但是补全,还是报错,这就是deepseek的局限性。需要继续发问,才能解决。
多尝试,困难才会被克服
学习就像追妹子,你只能看到背影,但只要坚持日积月累的付出,迟早她整个人属于你❤。
二.基础:准备工作
⚠️避免报错:
- 文件路径 没有写绝对路径默认是处理python代码所在路径的文件,因此需要把代码文件放到这个处理的文件同一文件夹里。
(1)安装 python-selenium模块
💻 代码:在命令行终端执行
# 安装必要库(命令行执行)
# pip install selenium
(2)核心操作汇总表:浏览器方法和属性总结
|| /属性
|–|–|–|–|–|
| | || | |
方法(属性) | 作用 | 示例代码 |
---|---|---|
back() | 浏览器后退 | driver.back() |
forward() | 前进 | driver.forward() |
refresh() | 刷新页面 | driver.refresh() |
title() | 获取当前页面标题 | print(driver.title) |
current_url() | 获取当前URL | print(driver.current_url) |
maximize_window() | 窗口最大化 | driver.maximize_window() |
set_window_size(w,h) | 设置窗口大小 | driver.set_window_size(1200,800) |
quit() | 关闭浏览器 | driver.quit() |
三.进阶:元素定位方法详解
⚠️避免报错:
- 文件路径 没有写绝对路径默认是处理python代码所在路径的文件,因此需要把代码文件放到这个处理的文件同一文件夹里。
- 修改部分代码 可以举一反三,这个也能生成合同第一页。
(1)概览
📦语法:find_element(By.策略, “值”)
💻 代码:
from selenium.webdriver.common.by import By
# 八大金刚定位法
By.ID
By.NAME
By.CLASS_NAME
By.TAG_NAME
By.LINK_TEXT # 完整链接文本
By.PARTIAL_LINK_TEXT # 部分链接文本
By.XPATH
By.CSS_SELECTOR
如图:
(2)通过ID定位
✅ 元素定位之后我们有其他操作,比如,输入文字、点击搜索,为简化方便理解只展示定位。
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动Edge浏览器
driver = webdriver.Edge()
# 1.打开网页
#driver.get("https://le.ouchn.cn/courseDetails/CSMC0000012933")
driver.get("https://www.baidu.com/")
# 2.定位到搜索框元素
play_button = driver.find_element(By.ID, "kw")
#play_button.click()
print(play_button)
# 关闭浏览器
#driver.quit()
如图:
(3)通过NAME定位
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动Edge浏览器
driver = webdriver.Edge()
# 1.打开网页
#driver.get("https://le.ouchn.cn/courseDetails/CSMC0000012933")
driver.get("https://www.baidu.com/")
# 2.定位到搜索框元素
play_button = driver.find_element(By.NAME, "wd")
#play_button.click()
print(play_button)
# 等待视频播放
time.sleep(100)
# 关闭浏览器
#driver.quit()
如图:
(4)通过CLASS_NAME定位(班级名定位)
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动Edge浏览器
driver = webdriver.Edge()
# 1.打开网页
#driver.get("https://le.ouchn.cn/courseDetails/CSMC0000012933")
driver.get("https://www.baidu.com/")
# 2.定位到搜索框元素
search_button = driver.find_element(By.CLASS_NAME, 's_btn')
search_button.click() # 点击搜索按钮
#play_button.click()
# 等待视频播放
time.sleep(100)
# 关闭浏览器
#driver.quit()
如图:
(5)通过TAG_NAME定位(标签名定位)
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动Edge浏览器
driver = webdriver.Edge()
# 1.打开网页
#driver.get("https://le.ouchn.cn/courseDetails/CSMC0000012933")
driver.get("https://www.baidu.com/")
# 2.定位到搜索框元素
news_link = driver.find_element(By.LINK_TEXT, '新闻')
news_link.click() # 点击进入新闻页面
driver.back() # 返回百度首页
# 等待视频播放
time.sleep(100)
# 关闭浏览器
#driver.quit()
如图:
(6)通过LINK_TEXT定位(全文链接定位)
原理:通过超链接的 完整显示文本 定位。
百度示例:“新闻”链接
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动Edge浏览器
driver = webdriver.Edge()
# 1.打开网页
#driver.get("https://le.ouchn.cn/courseDetails/CSMC0000012933")
driver.get("https://www.baidu.com/")
# 2.定位到搜索框元素
news_link = driver.find_element(By.LINK_TEXT, '新闻')
news_link.click() # 点击进入新闻页面
driver.back() # 返回百度首页
# 等待视频播放
time.sleep(100)
# 关闭浏览器
#driver.quit()
(7)通过PARTIAL_LINK_TEXT定位(部分链接定位)
原理:通过超链接的 部分文本 定位,类似模糊搜索。
百度示例:包含“地”字的链接(如“地图”)
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动Edge浏览器
driver = webdriver.Edge()
# 1.打开网页
#driver.get("https://le.ouchn.cn/courseDetails/CSMC0000012933")
driver.get("https://www.baidu.com/")
# 2.定位到搜索框元素
map_link = driver.find_element(By.PARTIAL_LINK_TEXT, '地')
map_link.click() # 点击进入百度地图
driver.back() # 返回首页
# 等待视频播放
time.sleep(100)
# 关闭浏览器
#driver.quit()
(8)通过XPATH定位(路径定位)
原理:通过元素的层级路径定位,类似文件目录。
百度示例:精准定位搜索按钮
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动Edge浏览器
driver = webdriver.Edge()
# 1.打开网页
#driver.get("https://le.ouchn.cn/courseDetails/CSMC0000012933")
driver.get("https://www.baidu.com/")
# 2.定位到搜索框元素
# 写法1:绝对路径(脆弱不推荐)
button = driver.find_element(By.XPATH, '/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input')
# 写法2:相对路径 + 属性组合(推荐!)
smart_xpath = driver.find_element(By.XPATH, '//input[@id="su" and @class="s_btn"]')
smart_xpath.click()
# 等待视频播放
time.sleep(100)
# 关闭浏览器
#driver.quit()
(9)通过CSS_SELECTOR定位(样式选择器)
原理:通过CSS样式规则定位,类似装修设计图。
百度示例:定位设置菜单
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动Edge浏览器
driver = webdriver.Edge()
# 1.打开网页
#driver.get("https://le.ouchn.cn/courseDetails/CSMC0000012933")
driver.get("https://www.baidu.com/")
# 2.定位到搜索框元素
# 定位右上角"设置"链接
settings = driver.find_element(By.CSS_SELECTOR, '#s-usersetting-top')
settings.click()
# 选择"高级搜索"(下拉菜单中的选项)
advanced_search = driver.find_element(By.CSS_SELECTOR, '.setpref[href="//www.baidu.com/gaoji/advanced.html"]')
advanced_search.click()
# 等待视频播放
time.sleep(100)
# 关闭浏览器
#driver.quit()
⏰提示:一种需求可以有多种类型代码实现,实际中,我们可以从中选择,最适合的。应用场景,如下:
企业合同管理系统基础模板
销售订单自动生成系统
财务报销单模板生成器
课程报名信息登记表
通过这个模板生成器,后续可以结合客户数据自动填充生成完整合同,实现办公自动化流程的完整闭环。
四.实战案例集锦:
自动搜索“人工智能发展现状”
💻 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Edge()
driver.get("https://www.baidu.com")
# 1. 通过ID定位搜索框并输入内容
driver.find_element(By.ID, 'kw').send_keys("人工智能")
# 2. 通过NAME定位搜索框(二次验证)
driver.find_element(By.NAME, 'wd').send_keys(" 发展现状")
# 3. 通过CLASS_NAME点击搜索按钮
driver.find_element(By.CLASS_NAME, 's_btn').click()
time.sleep(2) # 等待结果加载
# 4. 通过LINK_TEXT返回首页
driver.find_element(By.LINK_TEXT, '百度首页').click()
# 5. 通过CSS_SELECTOR打开设置菜单
driver.find_element(By.CSS_SELECTOR, '#s-usersetting-top').click()
# 6. 通过PARTIAL_LINK_TEXT选择搜索设置
driver.find_element(By.PARTIAL_LINK_TEXT, '搜索设置').click()
# 7. 通过XPATH选择每页显示50条结果
driver.find_element(By.XPATH, '//option[@value="50"]').click()
# 8. 通过TAG_NAME保存设置
buttons = driver.find_elements(By.TAG_NAME, 'button')
for btn in buttons:
if btn.text == "保存设置":
btn.click()
break
driver.quit() # 关闭浏览器
📒避坑指南:实际开发中建议使用 WebDriverWait 确保元素加载完成,避免因网络延迟导致定位失败
# 错误示例:class包含空格时
driver.find_element(By.CLASS_NAME, 'class1 class2') # 错误!
# 正确写法:只用其中一个class
driver.find_element(By.CLASS_NAME, 'class1') # 或改用CSS选择器
💡 扩展性:朋友们!可通过修改模板文件添加公司LOGO、联系方式等固定内容。
💡 调试技巧:先测试单个文档生成,再扩展为批量处理
💡在评论区告诉我,下期教你用Python搞定!