当前位置:首页>python>《Python 从入门到精通》115|提取网页数据:标题、链接、图片一个个抓下来

《Python 从入门到精通》115|提取网页数据:标题、链接、图片一个个抓下来

  • 2026-08-18 23:10:40
《Python 从入门到精通》115|提取网页数据:标题、链接、图片一个个抓下来

上一章我们已经把 BeautifulSoup 的基础用法讲清楚了。

你已经知道,网页不是一团纯文本。 它本质上是由一层一层标签组成的结构。

也正因为这样,爬虫真正开始有意思的地方,往往不是把网页抓回来,而是把网页里真正有价值的内容,一点点拆出来。

比如你打开一个资讯页,真正想要的可能只是文章标题。 比如你打开一个列表页,真正想要的可能是一批详情链接。 比如你打开一个图集页,真正想要的可能只是所有图片地址。

你会发现,程序不是在“看网页”。 程序是在“挑网页里对自己有用的数据”。

这一章的重点,就是把这件事真正做明白。

标题怎么提 链接怎么提 图片怎么提 拿出来之后,又该怎么整理

这一步一旦走通,你的爬虫就开始真的有“采集数据”的味道了。

一、先明确一件事:提取网页数据,不是复制整页内容

很多初学者第一次学网页解析时,会下意识觉得:

我已经把网页源码拿到了,是不是就算抓到了

严格来说,还不算。

因为网页源码只是原材料。 真正有用的数据,通常只占其中一小部分。

比如下面这段 HTML:

<html>    <head>        <title>Python 学习专栏</title>    </head>    <body>        <div class="article">            <h1>BeautifulSoup 入门实战</h1>            <p>适合新手学习网页解析</p>            <ahref="/detail/101">查看详情</a>            <imgsrc="cover.jpgalt="封面图">        </div>    </body></html>

如果你把整段都打印出来,当然也能看。 但真正可能有价值的,也许只是:

标题:BeautifulSoup 入门实战 链接:/detail/101 图片:cover.jpg

所以数据提取的本质不是保存整页。 而是从整页里筛出目标字段。

这件事和前面学 JSON、日志处理,其实是同一类思路。

原始数据很大。 真正有用的信息很少。 程序的价值,就是把有用的部分拎出来。

二、网页里最常见的三类可提取信息

为什么这一章专门讲标题、链接、图片。

因为这三类数据几乎是网页抓取里最常见的入门目标。

第一类,标题。 新闻标题、文章标题、商品标题、课程标题,这些通常都是最容易让人感受到“我真的提取到数据了”的字段。

第二类,链接。 列表页里的详情链接,导航页里的跳转地址,分页页码地址,这些都是后面继续爬取的入口。

第三类,图片。 商品图片、封面图、头像、文章配图,这些字段在网页里也非常高频。

你把这三类数据抓顺了,后面再学时间、作者、价格、摘要、标签这些字段,就会轻松很多。

因为本质上方法都差不多:

先定位标签 再拿文本或属性 最后整理结果

三、先从最简单的标题提取开始

标题通常是最好上手的一类数据。

因为很多网页都有比较明确的标题标签,比如:

<title><h1><h2>

先看一个很小的例子:

from bs4 import BeautifulSouphtml = """<html>    <head>        <title>Python 教程主页</title>    </head>    <body>        <h1>提取网页数据从这里开始</h1>        <p>这是正文介绍</p>    </body></html>"""soup = BeautifulSoup(html, "html.parser")print(soup.title.text)print(soup.h1.text)

这里你会得到两个不同层面的标题。

title 通常是浏览器标签页显示的网页标题。h1 更像页面主体里的主标题。

很多真实网页里,这两者并不完全相同。

比如:

浏览器标题可能是 某某新闻网 - 今日头条 - 科技频道

而正文里的 h1 可能只是 某款新手机正式发布

所以抓标题时,你要慢慢学会区分:

你要的是网页整体标题 还是页面主体标题

这在真实抓取里很重要。

四、为什么网页标题不一定只有一种

这也是很多初学者容易忽略的点。

同样叫“标题”,它可能出现在很多位置。

比如资讯列表页里,每条新闻都有一个标题。 文章详情页里,又有一个大标题。 网页标签页里,还有一个 <title>

所以你以后看到“提取标题”这种需求时,别马上想当然。 你要先问自己:

我要的是哪个标题

比如下面这段 HTML:

html = """<html>    <head>        <title>技术新闻频道</title>    </head>    <body>        <div class="news-item">            <h2>Python 3.15 新特性整理</h2>        </div>        <div class="news-item">            <h2>BeautifulSoup 实战技巧</h2>        </div>    </body></html>"""

这里至少有三种“标题感”不同的东西:

网页总标题:技术新闻频道 第一条新闻标题:Python 3.15 新特性整理 第二条新闻标题:BeautifulSoup 实战技巧

所以真正做网页提取时,目标一定要说清楚。 不然你写的代码可能没错,但拿到的不是你想要的那一类数据。

五、提取单个标题,通常就是 find

如果页面里只有一个明确主标题,比如文章详情页的大标题,那最常见的写法就是 find()

例如:

from bs4 import BeautifulSouphtml = """<html>    <body>        <div class="article">            <h1 class="title">Python 爬虫入门指南</h1>            <p>正文内容...</p>        </div>    </body></html>"""soup = BeautifulSoup(html, "html.parser")title_tag = soup.find("h1", class_="title")print(title_tag.text)

这个例子很有代表性。

不是只按 h1 找。 而是进一步结合 class="title"

因为真实网页里,单靠标签名往往不够稳。 更稳的思路通常是:

标签名 + class 标签名 + id 或者直接用 CSS 选择器

你要慢慢养成这种“定位更精确一点”的意识。

六、提取一组标题,通常就是 find_all 或 select

如果页面不是单个标题,而是一批标题,比如资讯列表,那就要换思路。

例如:

from bs4 import BeautifulSouphtml = """<html>    <body>        <div class="news">            <h2>第一条新闻标题</h2>        </div>        <div class="news">            <h2>第二条新闻标题</h2>        </div>        <div class="news">            <h2>第三条新闻标题</h2>        </div>    </body></html>"""soup = BeautifulSoup(html, "html.parser")titles = soup.find_all("h2")for tag in titles:    print(tag.text)

这里拿到的就是一组标题。

不过在真实场景里,我更推荐你先找“重复区块”,再进区块里提取字段。 而不是直接在整页里粗暴找所有 h2

为什么

因为真实网页里 h2 可能不止这一种用途。 有的可能是推荐区标题,有的可能是分类标题,有的才是正文列表标题。

所以更像正式代码的写法通常会是:

items = soup.select(".news")for item in items:    title = item.find("h2").text    print(title)

这种写法的思路更清楚:

先定位每一条新闻块 再从块里提标题

这在后面抓列表页时会特别常见。

七、链接为什么是网页抓取里最重要的数据之一

很多人刚开始学爬虫,只盯着标题和正文。 其实链接往往同样重要,甚至更重要。

因为很多页面是层层跳转的。

你先抓列表页。 列表页里只有一批标题和对应链接。 真正完整内容,要进入详情页才能拿到。

这意味着:

链接不只是页面上的一个字段。 它很多时候还是下一步爬取的入口。

所以会抓链接,几乎是爬虫里特别基础的一项能力。

你可以把链接理解成:

当前页面给你的下一步线索。

八、链接通常藏在哪

最常见的就是 <a> 标签的 href 属性里。

例如:

<a href="/detail/101">查看详情</a>

这里真正重要的不是“查看详情”这四个字。 而是 href="/detail/101"

所以抓链接时,最常见的写法通常是:

link = soup.find("a")print(link["href"])

或者更稳一点:

print(link.get("href"))

为什么我说 get() 更稳。

因为如果某个标签没有这个属性,直接写:

link["href"]

可能会报错。

而:

link.get("href")

拿不到时通常会返回 None,更适合写得稳一点。

这也是正式项目代码里比较常见的习惯。

九、提取一组链接,是网页采集里特别高频的动作

看一个典型列表页例子:

from bs4 import BeautifulSouphtml = """<html>    <body>        <ul>            <li><a href="/news1">第一条新闻</a></li>            <li><a href="/news2">第二条新闻</a></li>            <li><a href="/news3">第三条新闻</a></li>        </ul>    </body></html>"""soup = BeautifulSoup(html, "html.parser")links = soup.find_all("a")for tag in links:    print(tag.text, tag.get("href"))

这段代码非常适合初学者理解“链接提取”的基本样子。

你会得到:

标题文字 对应链接地址

这已经非常像一个最小版资讯列表采集器了。

很多真实项目,第一步就是这样:

先采集列表页标题和链接 再根据链接进入详情页 再采集详情页里的正文和其他字段

所以你现在提取的不只是一个属性。 你其实是在学会“如何从一个页面走向下一个页面”。

十、相对链接和绝对链接,一定要尽早分清

这是网页抓取里一个特别常见的实际问题。

有些链接长这样:

https://example.com/news1

这是绝对链接。 它本身已经完整,直接就能访问。

但很多网页里的链接长这样:

/news1/detail/101article/5001.html

这类叫相对链接。

它的问题是: 单独看它不完整。 你得结合当前网站的域名,才能拼成完整可访问地址。

比如当前页面是:

https://example.com/list

那相对链接:

/news1

通常要理解成:

https://example.com/news1

这一点特别重要。 因为很多初学者明明提取到了链接,却发现打不开。 原因往往不是提取错了,而是提取到的是相对路径。

后面你会经常需要把相对链接转成完整链接。

十一、图片提取,本质上和链接提取非常像

图片通常在 <img> 标签里。 而真正有价值的信息,通常藏在 src 属性里。

例如:

<img src="cover.jpg" alt="封面图">

你最常用的提取方式就是:

img = soup.find("img")print(img.get("src"))print(img.get("alt"))

其中:

src 通常是图片地址alt 通常是图片说明文字

所以图片提取和链接提取,本质上特别像。

链接看 href图片看 src

这就是为什么我前面一直说,网页数据提取的核心动作并不多。 你真正需要练的是:

会定位标签 会拿属性 会整理结果

十二、提取多张图片时,依然是先找一组标签

例如:

from bs4 import BeautifulSouphtml = """<html>    <body>        <img src="img1.jpg" alt="图片1">        <img src="img2.jpg" alt="图片2">        <img src="img3.jpg" alt="图片3">    </body></html>"""soup = BeautifulSoup(html, "html.parser")images = soup.find_all("img")for img in images:    print(img.get("src"), img.get("alt"))

这就是最基础的多图片提取方式。

不过你也要知道,真实网页里并不是所有图片都值得抓。

有些是正文图片。 有些是广告。 有些是图标。 有些是头像。 有些是懒加载占位图。

所以真正做项目时,通常还要配合页面结构一起判断。 不要一看到 img 就全抓。

这也说明一个问题:

BeautifulSoup 只是帮你找到元素。 真正“哪些元素有价值”,还得你自己判断。

十三、标题、链接、图片,最像正式项目的提取方式是什么

不是在整页里到处零碎地找。 而是先找到“重复内容区块”,再从每个区块里统一拿字段。

例如资讯列表页常见结构:

html = """<html>    <body>        <div class="item">            <h2>Python 入门教程</h2>            <a href="/article1">查看详情</a>            <img src="cover1.jpg" alt="封面1">        </div>        <div class="item">            <h2>BeautifulSoup 实战</h2>            <a href="/article2">查看详情</a>            <img src="cover2.jpg" alt="封面2">        </div>    </body></html>"""

更像正式代码的写法会是:

from bs4 import BeautifulSoupsoup = BeautifulSoup(html, "html.parser")items = soup.select(".item")for item in items:    title = item.find("h2").text    link = item.find("a").get("href")    image = item.find("img").get("src")    print("标题:", title)    print("链接:", link)    print("图片:", image)    print("-" * 20)

这一段特别值得你好好体会。

因为它已经非常接近真实列表页采集了。

先找一条条重复出现的内容块。 再从每个块里拿对应字段。

这比你直接在整个页面里分别找所有 h2、所有 a、所有 img 更稳。 因为它保证了字段之间是一一对应的。

这点很重要。

十四、为什么“区块化提取”比“全页扫标签”更稳

我们来把这件事彻底说透。

假设你直接这样写:

titles = soup.find_all("h2")links = soup.find_all("a")images = soup.find_all("img")

看起来也能拿到结果。

但问题是,网页里很可能还有别的 a、别的 img。 比如顶部导航、侧边推荐、底部广告,这些也全都会混进来。

这时你就会出现很麻烦的情况:

标题有 10 个 链接有 28 个 图片有 17 个

根本对不上。

而如果你先定位到每条内容区块,比如 .item,再从每个区块里分别取标题、链接、图片,那每一条数据天然就是绑定在一起的。

这就是区块化提取的最大价值:

让字段之间有归属关系。

这一步理解透了,你后面做真正列表页抓取时会省很多事。

十五、提取出来之后,最好先整理成字典

这一点也是特别值得早点养成的习惯。

不要提完就只顾着 print。 更推荐的方式是,把每条数据整理成结构化结果。

例如:

from bs4 import BeautifulSouphtml = """<html>    <body>        <div class="item">            <h2>Python 入门教程</h2>            <a href="/article1">查看详情</a>            <img src="cover1.jpg" alt="封面1">        </div>        <div class="item">            <h2>BeautifulSoup 实战</h2>            <a href="/article2">查看详情</a>            <img src="cover2.jpg" alt="封面2">        </div>    </body></html>"""soup = BeautifulSoup(html, "html.parser")items = soup.select(".item")result = []for item in items:    data = {"title": item.find("h2").text,"link": item.find("a").get("href"),"image": item.find("img").get("src")    }    result.append(data)print(result)

这样你最后得到的就是一个列表,里面每一项都是一条完整记录。

这种结构非常重要。

因为后面你无论是:

保存成 JSON 写入数据库 继续清洗 去重 统计

都会容易很多。

这也是为什么前面数据处理那一大阶段会在这里派上用场。 网页采集,说到底也是在生产结构化数据。

十六、真实网页里,经常会遇到节点缺失

这是一个非常现实的问题。

不是每条内容都一定有图片。 不是每个区块都一定有链接。 不是每个标签都一定存在。

比如有的文章有封面图,有的没有。 有的商品有原价和现价,有的只有现价。 有的列表项有摘要,有的没有。

这时候,如果你写得太死:

image = item.find("img").get("src")

一旦 find("img") 返回 None,后面就会报错。

所以更稳一点的写法应该是:

img_tag = item.find("img")image = img_tag.get("src"if img_tag elseNone

同理,链接、标题也都可以这样处理。

这就是为什么正式一点的爬虫代码,通常不会一味追求短。 而是更在意稳不稳。

现实网页从来不保证每一项都完美整齐。

十七、把稳一点的写法整理成一个完整例子

下面这段代码就更像真实项目一点了:

from bs4 import BeautifulSouphtml = """<html>    <body>        <div class="item">            <h2>Python 入门教程</h2>            <a href="/article1">查看详情</a>            <img src="cover1.jpg" alt="封面1">        </div>        <div class="item">            <h2>BeautifulSoup 实战</h2>            <a href="/article2">查看详情</a>        </div>    </body></html>"""soup = BeautifulSoup(html, "html.parser")items = soup.select(".item")result = []for item in items:    title_tag = item.find("h2")    link_tag = item.find("a")    img_tag = item.find("img")    data = {"title": title_tag.text if title_tag elseNone,"link": link_tag.get("href"if link_tag elseNone,"image": img_tag.get("src"if img_tag elseNone    }    result.append(data)print(result)

这时,即使第二条没有图片,也不会直接崩掉。

这类写法特别值得模仿。

因为真实爬虫最怕的不是代码长一点。 而是某一条数据格式一变,整个程序就挂了。

十八、网页数据提取和前面学的清洗、去重、统计,其实能直接连上

这也是这一章特别重要的一点。

你不要把网页采集看成全新的世界。 它和前面那一大阶段,其实是可以直接接上的。

比如你提取出来的标题,可能有前后空格,要清洗。 提取出来的链接,可能有重复,要去重。 提取出来的图片地址,可能有空值,要过滤。 采集完一批标题后,你可能还要统计一共有多少条。

也就是说,网页提取只是“拿数据”的第一步。 拿完之后,你依然会回到熟悉的流程:

清洗 过滤 去重 统计 保存

这也是为什么我前面一直强调,前面的数据处理能力不是白学的。 它们在这里全都能接上。

十九、真正做网页采集时,一个特别重要的习惯

永远先用浏览器看结构,再写代码。

不要闭着眼睛凭感觉写:

soup.find("h2")soup.select(".item")

先打开浏览器开发者工具。 看看目标数据到底在哪个标签里。 有没有 class。 有没有 id。 是不是在某个固定容器里。 链接是相对路径还是绝对路径。 图片是不是在 src,还是在别的属性里。

这个观察过程,很多时候比写代码本身更重要。

因为 BeautifulSoup 不会替你理解网页。 你得先自己看懂网页,程序才能按你的理解去提取。

这个习惯一旦建立起来,后面你写解析代码会快很多。

二十、这一章最容易踩的几个坑

第一个坑,是只会全页找标签,不会先找内容区块。

这样很容易把无关链接、无关图片也抓进来。

第二个坑,是拿到了标签,却忘了取 .text 或属性。

结果输出一堆带标签的内容,看起来很乱。

第三个坑,是不区分相对链接和绝对链接。

提取完后发现地址打不开,就以为自己抓错了。

第四个坑,是代码写得太死。

一旦某条数据没有图片,程序立刻报错。

第五个坑,是把“提取成功”和“提取对了”混为一谈。

程序能跑,不代表拿到的就是你真正想要的字段。

所以这一章最重要的,不只是会写 BeautifulSoup 代码。 更是要学会验证:

我提取到的,到底是不是目标数据。

二十一、这一章真正要建立的,是字段思维

学到这里,你不应该只停留在“会不会写 find()”。

你更应该开始形成一种字段思维。

也就是:

这个网页里,我真正想保留的字段有哪些 标题算一个字段 链接算一个字段 图片地址算一个字段 作者、时间、摘要、价格,也都可以看作字段

一旦你开始这样看网页,网页就不再只是一个页面。 它开始像一张数据表。

每个内容区块,就是一条记录。 每条记录里,又有多个字段。

这其实就是从“看网页”走向“采数据”的关键一步。

本章小结

网页数据提取的核心,不是把整页源码保存下来。 而是从 HTML 结构中,把真正有价值的字段一项项拿出来。

这一章里,最常见的三类字段就是:

标题 链接 图片

标题通常从标签文本中提取。 链接通常从 <a> 标签的 href 属性中提取。 图片通常从 <img> 标签的 src 属性中提取。

更像正式项目的提取方式,不是全页乱扫标签,而是:

先找重复内容区块 再从每个区块中提取对应字段 最后整理成字典或列表

只要这套思路建立起来,后面你抓文章列表、商品列表、图集页面,都会顺很多。

课后练习

第一,自己写一段 HTML,里面包含多个标题、多个链接、多个图片,然后分别把它们提取出来。

第二,练习把每条内容区块整理成字典,至少包含 titlelinkimage 三个字段。

第三,故意让某一条内容没有图片,再把代码改成不会报错的写法。

第四,练习区分相对链接和绝对链接,观察提取出来的地址差别。

第五,把提取结果放进列表里,再自己做一次去重或统计,体会网页采集和数据处理是怎么连起来的。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 20:53:56 HTTP/2.0 GET : https://f.mffb.com.cn/a/505336.html
  2. 运行时间 : 0.294142s [ 吞吐率:3.40req/s ] 内存消耗:4,762.41kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=301136e21898195288b8e5b27708b449
  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.001036s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001510s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.010656s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002816s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001611s ]
  6. SELECT * FROM `set` [ RunTime:0.011023s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001952s ]
  8. SELECT * FROM `article` WHERE `id` = 505336 LIMIT 1 [ RunTime:0.015669s ]
  9. UPDATE `article` SET `lasttime` = 1787316836 WHERE `id` = 505336 [ RunTime:0.014295s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000632s ]
  11. SELECT * FROM `article` WHERE `id` < 505336 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000960s ]
  12. SELECT * FROM `article` WHERE `id` > 505336 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000954s ]
  13. SELECT * FROM `article` WHERE `id` < 505336 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001438s ]
  14. SELECT * FROM `article` WHERE `id` < 505336 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002800s ]
  15. SELECT * FROM `article` WHERE `id` < 505336 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.046829s ]
0.298264s