当前位置:首页>python>每天学习一点Python——用三种方法提取网页标题

每天学习一点Python——用三种方法提取网页标题

  • 2026-03-18 19:27:04
每天学习一点Python——用三种方法提取网页标题

每天学习一点Python——用三种方法提取网页标题

大家好,今天我们来做一个非常实用的练习:如何从一个网页中提取出标题。这看起来简单,但里面却藏着不少容易踩的坑。让我们通过实际代码一步步来探索。


准备工作:获取网页HTML

首先,我们需要从网上下载一个页面的HTML代码。这里我们用Python内置的urllib.request模块来完成任务。

from urllib.request import urlopen

url = "http://olympus.realpython.org/profiles/aphrodite"
page = urlopen(url)
html_bytes = page.read()
html = html_bytes.decode("utf-8")

print
(html)

代码讲解:

  • • from urllib.request import urlopen:从Python标准库中导入urlopen函数,这个函数可以打开一个网络地址。
  • • url = "...":定义要访问的网址,这里是一个专门用来练习的测试页面。
  • • page = urlopen(url):调用urlopen()打开网页,返回一个HTTPResponse对象,它包含了服务器的响应。
  • • html_bytes = page.read():使用.read()方法读取响应内容。注意,返回的是字节序列(bytes类型),而不是字符串。
  • • html = html_bytes.decode("utf-8"):将字节序列解码成字符串。"utf-8"是最常用的字符编码,绝大多数网页都使用它。
  • • print(html):打印出整个HTML源码。

执行结果:

<html>
<head>
<title>Profile: Aphrodite</title>
</head>
<body bgcolor="yellow">
<center>
<br><br>
<img src="/static/aphrodite.gif" />
<h2>Name: Aphrodite</h2>
<br><br>
Favorite animal: Dove
<br><br>
Favorite color: Red
<br><br>
Hometown: Mount Olympus
</center>
</body>
</html>

可以看到,我们成功获取了完整的HTML代码。现在,我们的目标是从中提取出<title>标签里的内容"Profile: Aphrodite"。


方法一:字符串查找(最容易踩坑)

第一种思路是直接用字符串的.find()方法定位标签位置,然后用切片提取。

步骤1:查找<title>标签的位置

title_index = html.find("<title>")
print
(title_index)

执行结果:

14

.find()方法返回子字符串第一次出现的起始索引。这里返回14,意思是字符串"<title>"从索引14开始。

💡 小Tip:初学者最容易困惑的地方

为什么是14?因为HTML中<html><head>后面各有一个换行符\n,它们也是字符串的一部分,占用索引位置。

具体索引分布:

  • • 0-5:<html>(6个字符)
  • • 6:\n(换行符)
  • • 7-12:<head>(6个字符)
  • • 13:\n(又一个换行符)
  • • 14:<(这才是<title>的开始)

字符串中的每个字符(包括空格、换行)都计入索引!

步骤2:计算标题开始位置

start_index = title_index + len("<title>")
print
(start_index)

执行结果:

21

len("<title>")返回7(因为<title>有7个字符)。14 + 7 = 21,所以标题内容从索引21开始。

步骤3:查找</title>标签的位置

end_index = html.find("</title>")
print
(end_index)

执行结果:

39

</title>的起始位置是39。

步骤4:提取标题

title = html[start_index:end_index]
print
(title)

执行结果:

Profile: Aphrodite

切片html[21:39]成功提取出了标题!

💡 小Tip:切片规则

切片[start:end]包含start索引的字符,但不包含end索引的字符。所以索引39的<没有被包含在内,这正是我们想要的。


方法二:正则表达式(更灵活)

字符串查找的方法虽然可行,但太脆弱了——如果HTML格式稍有变化(比如<title>中间多了个空格),代码就会出错。这时候,正则表达式就派上用场了。

先来熟悉正则表达式基础

import re

print
(re.findall("ab*c", "ac"))
print
(re.findall("ab*c", "abcd"))
print
(re.findall("ab*c", "acc"))
print
(re.findall("ab*c", "abcac"))
print
(re.findall("ab*c", "abdc"))

执行结果:

['ac']
['abc']
['ac']
['abc', 'ac']
[]

代码讲解:

  • • import re:导入Python的正则表达式模块。
  • • re.findall(模式, 字符串):在字符串中查找所有匹配模式的子串,返回列表。
  • • "ab*c":这是一个正则表达式模式,它的含义是:
    • • a:匹配字符a
    • • b**表示前面的字符(b)出现0次或多次
    • • c:匹配字符c
  • • 所以"ab*c"匹配的是:以a开头、以c结尾、中间有0个或多个b的字符串

逐行解析:

  • • "ac":a + 0个b + c ✅ → ['ac']
  • • "abcd":a + 1个b + c → "abc" ✅ → ['abc']
  • • "acc":a + 0个b + c ✅ → ['ac']
  • • "abcac":找到两个匹配:"abc""ac" ✅ → ['abc', 'ac']
  • • "abdc":a后面是b,但再后面是d(不是c),所以不匹配 → []

忽略大小写匹配

print(re.findall("ab*c", "ABC"))
print
(re.findall("ab*c", "ABC", re.IGNORECASE))

执行结果:

[]
['ABC']

代码讲解:

  • • 第一个re.findall()没有指定标志位,默认区分大小写,所以找不到匹配。
  • • 第二个re.findall()增加了第三个参数re.IGNORECASE,这个标志让匹配忽略大小写,所以能找到"ABC"

点号匹配任意字符

print(re.findall("a.c", "abc"))
print
(re.findall("a.c", "abbc"))

执行结果:

['abc']
[]

"a.c"中的.代表任意单个字符,所以:

  • • "abc":a + b(任意字符) + c ✅
  • • "abbc":a + b,但下一个字符是b不是c(模式只匹配三个字符)❌

.*匹配任意字符任意次数

print(re.findall("a.*c", "abc"))
print
(re.findall("a.*c", "abbc"))
print
(re.findall("a.*c", "ac"))

执行结果:

['abc']
['abbc']
['ac']

"a.*c"中的.*代表任意字符出现任意次数,所以:

  • • "abc":a + b + c ✅
  • • "abbc":a + bb + c ✅
  • • "ac":a + 0个字符 + c ✅

使用re.search()获取匹配对象

match_results = re.search("ab*c", "ABC", re.IGNORECASE)
print
(match_results.group())

执行结果:

ABC

代码讲解:

  • • re.search()re.findall()不同,它返回第一个匹配的Match对象,而不是列表。
  • • match_results.group()从Match对象中提取出匹配的字符串。

re.sub()替换文本——小心贪婪匹配

string = "Everything is <replaced> if it's in <tags>."
string = re.sub("<.*>", "ELEPHANTS", string)
print
(string)

执行结果:

Everything is ELEPHANTS.

代码讲解:

  • • re.sub(模式, 替换文本, 原字符串):将字符串中匹配模式的部分替换成指定文本。
  • • "<.*>":这个模式匹配从第一个<到最后一个>之间的所有内容。
  • • 问题在于.*贪婪匹配,它会尽可能匹配最长的字符串。所以它匹配了整个"<replaced> if it's in <tags>",而不是分别匹配两个标签。

使用非贪婪匹配.*?

string = "Everything is <replaced> if it's in <tags>."
string = re.sub("<.*?>", "ELEPHANTS", string)
print
(string)

执行结果:

Everything is ELEPHANTS if it's in ELEPHANTS.

代码讲解:

  • • "<.*?>".*?非贪婪匹配,它会尽可能匹配最短的字符串。
  • • 现在它分别匹配了<replaced><tags>两个标签,分别替换成"ELEPHANTS"。

💡 小Tip:贪婪 vs 非贪婪

  • • *+等量词默认是贪婪的,会匹配尽可能多的字符。
  • • 在量词后面加?变成非贪婪(如*?+?),会匹配尽可能少的字符。
  • • 在处理HTML标签时,通常需要用非贪婪匹配,避免把多个标签一起匹配掉。

用正则表达式提取标题

import re
from
 urllib.request import urlopen

url = "http://olympus.realpython.org/profiles/aphrodite"
page = urlopen(url)
html = page.read().decode("utf-8")

pattern = "<title.*?>.*?</title.*?>"
match_results = re.search(pattern, html, re.IGNORECASE)
title = match_results.group()
title = re.sub("<.*?>", "", title)

print
(title)

执行结果:

Profile: Aphrodite

代码讲解:

  • • pattern = "<title.*?>.*?</title.*?>":这个模式分三部分理解:
    1. 1. <title.*?>:匹配<title开头,后面可能有任意字符(如空格、属性),非贪婪匹配到第一个>结束。
    2. 2. .*?:非贪婪匹配标题内容。
    3. 3. </title.*?>:匹配</title开头,后面可能有任意字符,非贪婪匹配到第一个>结束。
  • • re.search(pattern, html, re.IGNORECASE):在html中搜索匹配pattern的内容,忽略大小写(这样即使HTML中是<TITLE>也能匹配)。
  • • match_results.group():从Match对象中提取出匹配的完整字符串,比如"<title>Profile: Aphrodite</title>"
  • • re.sub("<.*?>", "", title):用空字符串替换所有HTML标签,只保留文本内容。
  • • print(title):打印最终提取出的标题。

方法三:BeautifulSoup HTML解析器(最专业)

正则表达式虽然强大,但处理复杂的HTML时容易出错。专业的HTML解析器BeautifulSoup是更好的选择。

首先需要安装:

pip install beautifulsoup4

创建BeautifulSoup对象

from bs4 import BeautifulSoup
from
 urllib.request import urlopen

url = "http://olympus.realpython.org/profiles/dionysus"
page = urlopen(url)
html = page.read().decode("utf-8")

soup = BeautifulSoup(html, "html.parser")

print
(soup)

代码讲解:

  • • from bs4 import BeautifulSoup:从bs4模块导入BeautifulSoup类。
  • • soup = BeautifulSoup(html, "html.parser"):创建BeautifulSoup对象。第一个参数是要解析的HTML字符串,第二个参数"html.parser"指定使用Python内置的HTML解析器。
  • • print(soup):打印解析后的对象,会显示格式化后的HTML。

执行结果:

<html>
<head>
<title>Profile: Dionysus</title>
</head>
<body bgcolor="yellow">
<center>
<br/><br/>
<img src="/static/dionysus.jpg"/>
<h2>Name: Dionysus</h2>
<img src="/static/grapes.png"/><br/><br/>
Hometown: Mount Olympus
<br/><br/>
Favorite animal: Leopard <br/>
<br/>
Favorite Color: Wine
</center>
</body>
</html>

提取纯文本

print(soup.get_text())

代码讲解:

  • • .get_text():提取HTML文档中的所有文本内容,自动去除HTML标签。注意方法名是小写的get_text,不是get_Text

执行结果:


Profile: Dionysus



Name: Dionysus

Hometown: Mount Olympus

Favorite animal: Leopard 

Favorite Color: Wine


💡 小Tip:常见拼写错误

很多初学者会写成soup.get_Text(),但Python是区分大小写的,正确的写法是soup.get_text()(小写t)。

如果写成soup.get_Text(),会得到错误:

TypeError: 'NoneType' object is not callable

这是因为get_Text不存在,Python找到了一个叫get_Text的属性(值是None),然后试图调用它,当然会失败。

查找所有图片标签

img_tags = soup.find_all("img")
print
(img_tags)

执行结果:

[<img src="/static/dionysus.jpg"/>, <img src="/static/grapes.png"/>]

代码讲解:

  • • soup.find_all("img"):查找文档中所有<img>标签,返回一个列表。列表中的每个元素都是Tag对象,而不是字符串。

解包Tag对象并查看标签名

image1, image2 = soup.find_all("img")
print
(image1.name)

执行结果:

img

代码讲解:

  • • image1, image2 = soup.find_all("img"):将返回的列表解包赋值给两个变量。
  • • image1.name:每个Tag对象都有.name属性,返回标签名(这里是"img")。

访问标签属性

print(image1["src"])
print
(image2["src"])

执行结果:

/static/dionysus.jpg
/static/grapes.png

代码讲解:

  • • image1["src"]:通过字典风格的键访问,获取<img>标签的src属性值。
  • • 这比正则表达式简单多了!

直接访问特定标签

print(soup.title)
print
(soup.title.string)

执行结果:

<title>Profile: Dionysus</title>
Profile: Dionysus

代码讲解:

  • • soup.title:直接获取<title>标签,返回Tag对象。
  • • soup.title.string:获取标签内的文本内容。

带条件的查找

specific_img = soup.find_all("img", src="/static/dionysus.jpg")
print
(specific_img)

执行结果:

[<img src="/static/dionysus.jpg"/>]

代码讲解:

  • • soup.find_all("img", src="/static/dionysus.jpg"):查找所有<img>标签中,src属性等于指定值的标签。
  • • 这是BeautifulSoup的强大功能,可以根据标签属性精确定位。

三种方法对比

方法
优点
缺点
适用场景
字符串方法
无需安装库,简单直接
对格式变化敏感,易出错
非常规整的HTML,快速测试
正则表达式
灵活强大,可处理复杂模式
写起来复杂,可读性差
需要精确模式匹配的场景
BeautifulSoup
专业稳定,容错性强,代码简洁
需要安装第三方库
绝大多数网页解析任务

推荐:日常工作中,除非是非常简单的任务,否则建议直接用BeautifulSoup,省时省力又稳定。


总结

今天我们通过一个简单的“提取网页标题”的任务,学习了:

  1. 1. 字符串方法的基本操作:.find()查找位置、切片提取内容,以及要注意的索引计数问题
  2. 2. 正则表达式的基础知识:元字符含义、贪婪与非贪婪、常用函数findall()search()sub()
  3. 3. BeautifulSoup的基本使用:创建对象、提取文本、查找标签、访问属性

这三种方法各有千秋,掌握它们,你就拥有了处理各种HTML解析任务的工具箱。


📦 资源获取提示

关注「码农自习室」,后台回复关键词 Python学习,即可获取本文完整代码,一起动手掌握高效编程的核心技巧!


❤️ 支持我们

如果觉得本文对你有帮助,欢迎点赞 + 关注,您的支持是我们持续创作优质内容的最大动力!


📚 学习资源说明

本文内容整理自《Python基础教程(第3版)》第16章,所有命令均已实测。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 23:35:58 HTTP/2.0 GET : https://f.mffb.com.cn/a/477799.html
  2. 运行时间 : 0.242644s [ 吞吐率:4.12req/s ] 内存消耗:4,602.71kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=f9a570686349d52de93e1eb250b57e25
  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.000882s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001662s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000651s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000661s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001419s ]
  6. SELECT * FROM `set` [ RunTime:0.029684s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.002122s ]
  8. SELECT * FROM `article` WHERE `id` = 477799 LIMIT 1 [ RunTime:0.001230s ]
  9. UPDATE `article` SET `lasttime` = 1774625759 WHERE `id` = 477799 [ RunTime:0.008238s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000696s ]
  11. SELECT * FROM `article` WHERE `id` < 477799 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001056s ]
  12. SELECT * FROM `article` WHERE `id` > 477799 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001103s ]
  13. SELECT * FROM `article` WHERE `id` < 477799 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.007897s ]
  14. SELECT * FROM `article` WHERE `id` < 477799 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001908s ]
  15. SELECT * FROM `article` WHERE `id` < 477799 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.007316s ]
0.246644s