当前位置:首页>python>Python使用Selenium实现浏览器自动化

Python使用Selenium实现浏览器自动化

  • 2026-08-18 23:11:33
Python使用Selenium实现浏览器自动化

准备工作

为什么要模拟浏览器?

对爬虫稍有了解的同学可能会有疑问:明明可以用 requests 库直接获取网页源代码,为什么还要模拟浏览器呢?

现实很骨感:

  1. 反爬虫机制
     - 你有爬虫,别人有反爬虫。网站会检测请求头,非浏览器请求直接拒绝
  2. JavaScript 渲染
     - 现代网站很多内容是通过 JS 动态加载的,requests 拿到的只是空壳
  3. 验证码拦截
     - 滑块验证、点击验证、短信验证...这些用代码很难绕过
  4. 登录态维持
     - Cookie、Session、Token 等身份验证机制复杂

Selenium 的优势:

  • 真实打开浏览器,网站识别为正常用户
  • 自动执行 JavaScript,拿到完整渲染后的页面
  • 可以模拟人工操作:点击、输入、滑动
  • 能处理复杂的登录流程

Selenium 介绍

Selenium 可以说是网络爬虫中的王者级工具了:

  • 最初用途
    :自动化测试工具,测试网页功能是否正常
  • 爬虫领域
    :控制真实浏览器,绕过大部分反爬机制
  • 更多玩法
    • 自动登录各类网站
    • 定时抢购商品(茅台、火车票、演唱会门票)
    • 自动填写表单、提交数据
    • 批量上传/下载文件
    • 自动化运营(自动发帖、点赞、评论)

一句话总结:Selenium 就是一个用代码控制的"机器人浏览器"。


安装工作

要在 Windows 中使用 Selenium,需要准备三样东西:

组件
作用
本教程使用
Selenium 库
Python 控制浏览器的接口
最新版
浏览器
被控制的程序
Chrome
浏览器驱动
翻译官(把 Python 指令转成浏览器能懂的语言)
chromedriver

1. 安装 Selenium 库

打开 PyCharm 底部的终端(Terminal),输入:

pip install selenium

安装完成后,在代码中这样导入:

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.service import Service

2. 安装 Chrome 浏览器

直接访问官网下载安装:Google Chrome 网络浏览器

安装完成后,在 Chrome 地址栏输入 chrome://version/ 查看版本号:

记住版本号的前三位,比如 98.0.4758,等下要用。

3. 安装 ChromeDriver 驱动

为什么需要驱动?

想象 Selenium 是说英语的,Chrome 是说法语的,它们之间需要一个翻译——这就是 ChromeDriver。

下载步骤:

  1. 打开下载地址:http://chromedriver.storage.googleapis.com/index.html
  2. 找到与你的 Chrome 版本对应的文件夹
  3. 点击进入,下载 Windows 版本(chromedriver_win32.zip
  4. 解压后得到 chromedriver.exe
  5. 把它放到一个固定位置,比如 D:\driver\chromedriver.exe

版本对应很重要! Chrome 升级后,驱动可能也要重新下载对应版本。


基本用法

初始化浏览器对象

准备工作完成,来写第一行 Selenium 代码:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Service# 指定驱动路径s = Service(r'D:\driver\chromedriver.exe')# 初始化浏览器browser = webdriver.Chrome(service=s)# 等待2秒看看效果time.sleep(2)# 关闭浏览器browser.close()

运行后,你会看到 Chrome 窗口弹出来,过2秒自动关闭。这就是 Selenium 在控制浏览器!


无头模式(Headless)

上面的代码会弹出浏览器窗口,有时候我们不需要看到界面(比如在服务器上运行),可以用无头模式

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Services = Service(r'D:\driver\chromedriver.exe')# 创建配置对象option = webdriver.ChromeOptions()option.add_argument("headless")  # 开启无头模式# 初始化无头浏览器browser = webdriver.Chrome(service=s, options=option)# 访问百度browser.get(r'https://www.baidu.com/')# 截图看看效果browser.get_screenshot_as_file('截图.png')print("截图已保存")browser.close()

运行后没有窗口弹出,但会生成一张 截图.png

无头模式的适用场景:

  • 服务器环境(没有图形界面)
  • 提高运行速度(不用渲染界面)
  • 后台自动化任务

访问页面

使用 get() 方法访问指定网址:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Services = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)# 访问百度首页browser.get(r'https://www.baidu.com/')print("已打开百度")time.sleep(2)browser.close()

设置浏览器大小

可以设置窗口分辨率,或者最大化:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Services = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(1)# 设置窗口大小为 500x500browser.set_window_size(500500)print("窗口已调整为 500x500")time.sleep(1)# 设置窗口大小为 1000x800browser.set_window_size(1000800)print("窗口已调整为 1000x800")time.sleep(1)# 最大化窗口browser.maximize_window()print("窗口已最大化")time.sleep(1)browser.close()

为什么要设置窗口大小?

  • 有些网站会检测窗口大小判断是否为机器人
  • 响应式网页在不同分辨率下显示不同内容
  • 截图时需要固定尺寸

刷新页面

相当于按 F5 刷新:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Services = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# 刷新页面browser.refresh()print("页面已刷新")time.sleep(2)browser.close()

前进后退

模拟浏览器的后退和前进按钮:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Services = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)# 访问百度browser.get(r'https://www.baidu.com/')print("当前页面:百度")time.sleep(2)# 访问淘宝browser.get(r'https://www.taobao.com')print("当前页面:淘宝")time.sleep(2)# 后退到百度browser.back()print("后退到:百度")time.sleep(2)# 前进到淘宝browser.forward()print("前进到:淘宝")time.sleep(2)browser.close()

获取页面基础属性

可以获取网页的各种基本信息:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Services = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# 获取网页标题print(f"网页标题: {browser.title}")# 获取当前网址print(f"当前网址: {browser.current_url}")# 获取浏览器名称print(f"浏览器: {browser.name}")# 获取页面源码(可以用来解析数据)html = browser.page_sourceprint(f"页面源码长度: {len(html)} 字符")browser.close()

页面源码怎么用?

  • 用正则表达式提取数据
  • 用 BeautifulSoup 解析 HTML
  • 用 XPath 定位元素

定位元素

网页自动化的核心就是找到元素,然后操作它。Selenium 提供了 8 种定位方式。

以百度搜索框为例,它的 HTML 结构是:

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

首先导入 By 类:

from selenium.webdriver.common.by import By

1. id 定位

通过元素的 id 属性定位,最常用也最精准:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# 通过 id="kw" 定位搜索框,输入"python"browser.find_element(By.ID, 'kw').send_keys('python')print("已输入搜索词:python")time.sleep(2)browser.close()

id 定位的特点:

  • 一个页面中 id 应该是唯一的
  • 定位速度最快
  • 首选的定位方式

2. name 定位

通过 name 属性定位:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# 通过 name="wd" 定位搜索框browser.find_element(By.NAME, 'wd').send_keys('python')print("已使用 name 定位输入")time.sleep(2)browser.close()

3. class 定位

通过 class 属性定位:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# 通过 class="s_ipt" 定位搜索框browser.find_element(By.CLASS_NAME, 's_ipt').send_keys('python')print("已使用 class 定位输入")time.sleep(2)browser.close()

注意: 一个页面中可能有多个元素使用相同的 class,这时候只会找到第一个。


4. tag 定位

通过 HTML 标签名定位:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# 通过 tag "input" 定位# 注意:页面可能有多个 input,这只会找到第一个browser.find_element(By.TAG_NAME, 'input').send_keys('python')time.sleep(2)browser.close()

tag 定位的问题:

  • 一个页面通常有大量相同的标签
  • 很难精准定位到目标元素
  • 一般配合其他条件使用

5. link 定位

通过链接的完整文本定位:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# 点击文本为"新闻"的链接browser.find_element(By.LINK_TEXT, '新闻').click()print("已点击新闻链接")time.sleep(2)browser.quit()  # 使用 quit() 关闭所有页面

6. partial link 定位

通过链接的部分文本定位(模糊匹配):

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# 链接文本包含"闻"字就匹配(比如"新闻")browser.find_element(By.PARTIAL_LINK_TEXT, '闻').click()print("已使用模糊匹配点击")time.sleep(2)browser.quit()

适用场景:

  • 链接文本很长,不想写全
  • 链接文本有动态变化的部分

7. XPath 定位

XPath 是一种在 XML/HTML 文档中定位元素的语言,功能非常强大:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# XPath 定位://input[@id="kw"]# 意思是:找到 id 属性等于 kw 的 input 元素browser.find_element(By.XPATH, '//*[@id="kw"]').send_keys('python')print("已使用 XPath 定位输入")time.sleep(2)browser.quit()

常用 XPath 语法:

XPath 表达式
含义
//div
找到所有 div 元素
//input[@id="kw"]
找到 id=kw 的 input
//div[@class="item"]
找到 class=item 的 div
//div[contains(@class, "item")]
class 包含 item 的 div
//div[text()="确定"]
文本为"确定"的 div
//div[@id="a"]//span
id=a 的 div 下的所有 span

8. CSS Selector 定位

CSS 选择器定位,语法简洁、执行速度快:

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')time.sleep(2)# CSS 选择器:#kw# # 表示 id,所以 #kw 就是 id=kw 的元素browser.find_element(By.CSS_SELECTOR, '#kw').send_keys('python')print("已使用 CSS 选择器定位输入")time.sleep(2)browser.quit()

常用 CSS 选择器:

CSS 选择器
含义
#id
id 选择器,如 #kw
.class
class 选择器,如 .s_ipt
tag
标签选择器,如 input
tag#id
组合选择器,如 input#kw
tag.class
组合选择器,如 input.s_ipt
[attr=value]
属性选择器,如 [name="wd"]
div > span
子元素选择器
div span
后代元素选择器

9. 定位多个元素

如果页面上有多个相同条件的元素,可以用 find_elements(注意多了个 s):

from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bys = Service(r'D:\driver\chromedriver.exe')browser = webdriver.Chrome(service=s)browser.get(r'https://www.baidu.com/')# 找到所有 input 元素inputs = browser.find_elements(By.TAG_NAME, 'input')print(f"页面共有 {len(inputs)} 个 input 元素")# 遍历每个元素for i, input_elem in enumerate(inputs):    print(f"第{i+1}个 input")browser.quit()

返回的是列表,可以遍历处理每个元素。


文档总结

一、核心知识点回顾

1. Selenium 是什么?

Selenium 是一个浏览器自动化工具,就像一个用代码控制的"机器人":

  • 能做什么
    :打开网页、点击按钮、输入文字、截图、获取数据
  • 为什么用它
    :绕过反爬虫、执行 JavaScript、模拟真实用户操作
  • 典型场景
    :自动登录、数据抓取、自动化测试、定时抢购

工作流程图

Python代码 → Selenium库 → ChromeDriver → Chrome浏览器 → 目标网站

2. 环境搭建三步走

步骤
操作
注意事项
① 装库
pip install selenium
使用 PyCharm 终端安装
② 装浏览器
下载安装 Chrome
记住版本号
③ 装驱动
下载对应版本的 chromedriver
版本必须匹配!

版本匹配检查:

  • Chrome 地址栏输入 chrome://version/ 查看版本
  • 驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
  • 前三位版本号要对上(如 98.0.4758)

3. 浏览器基本操作

from selenium import webdriverfrom selenium.webdriver.chrome.service import Service# 初始化s = Service(r'驱动路径')browser = webdriver.Chrome(service=s)# 常用操作browser.get('网址')              # 访问页面browser.refresh()               # 刷新browser.back()                  # 后退browser.forward()               # 前进browser.set_window_size(宽, 高)  # 设置大小browser.maximize_window()       # 最大化# 获取信息browser.title           # 页面标题browser.current_url     # 当前网址browser.page_source     # 页面源码# 关闭browser.close()         # 关闭当前窗口browser.quit()          # 关闭所有窗口

4. 元素定位八法

定位方式
语法
适用场景
id
By.ID, 'kw'
首选,最精准
name
By.NAME, 'wd'
表单元素常用
class
By.CLASS_NAME, 's_ipt'
样式类名
tag
By.TAG_NAME, 'input'
标签名
link
By.LINK_TEXT, '新闻'
完整链接文本
partial link
By.PARTIAL_LINK_TEXT, '闻'
部分链接文本
XPath
By.XPATH, '//*[@id="kw"]'
万能,功能最强
CSS
By.CSS_SELECTOR, '#kw'
简洁,速度快

选择建议:

  1. 有 id 用 id(最快最准)
  2. 没 id 用 name 或 class
  3. 复杂情况用 XPath 或 CSS
  4. 避免用 tag(太泛)

5. 元素操作方法

找到元素后,可以进行的操作:

element = browser.find_element(By.ID, 'kw')# 输入文字element.send_keys('要输入的内容')# 点击元素element.click()# 清空输入框element.clear()# 获取元素文本text = element.text# 获取属性值value = element.get_attribute('value')

二、常见问题与解决

问题1:报错 SessionNotCreatedException

原因:Chrome 和 ChromeDriver 版本不匹配解决:重新下载对应版本的驱动

问题2:报错 NoSuchElementException

原因:元素还没加载出来就去找了解决:加 time.sleep() 等待,或用显式等待

问题3:找不到元素,但页面上明明有

原因:元素在 iframe 里,或是新窗口解决:切换 iframe 或切换窗口句柄

问题4:输入中文出现乱码

解决:send_keys() 直接支持中文,如乱码检查文件编码为 UTF-8

三、学习建议

  1. 从模仿开始
     —— 先把文档里的代码跑通,再修改参数看效果
  2. 多用开发者工具
     —— F12 检查元素,练习定位方法
  3. 注意等待
     —— 网页加载需要时间,适当加 sleep 或学习显式等待
  4. 异常处理
     —— 网络不稳定,要加 try-except 处理异常
  5. 循序渐进
     —— 先掌握基础操作,再学复杂功能

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 16:50:59 HTTP/2.0 GET : https://f.mffb.com.cn/a/507989.html
  2. 运行时间 : 0.228947s [ 吞吐率:4.37req/s ] 内存消耗:4,725.82kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=4bc6731c0982294128dfe5397cc73638
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001187s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001780s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000785s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000731s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001349s ]
  6. SELECT * FROM `set` [ RunTime:0.000599s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001608s ]
  8. SELECT * FROM `article` WHERE `id` = 507989 LIMIT 1 [ RunTime:0.003878s ]
  9. UPDATE `article` SET `lasttime` = 1787302259 WHERE `id` = 507989 [ RunTime:0.003204s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.003042s ]
  11. SELECT * FROM `article` WHERE `id` < 507989 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001472s ]
  12. SELECT * FROM `article` WHERE `id` > 507989 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001181s ]
  13. SELECT * FROM `article` WHERE `id` < 507989 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.030984s ]
  14. SELECT * FROM `article` WHERE `id` < 507989 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006648s ]
  15. SELECT * FROM `article` WHERE `id` < 507989 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002342s ]
0.233497s