登录
首页 >  Golang >  Go教程

Golang实现RSS抓取方法详解

时间:2025-11-30 11:18:34 173浏览 收藏

本教程详解如何使用Golang实现RSS抓取,助力开发者快速获取网站内容。通过`net/http`包发送HTTP请求,获取XML格式的RSS源数据,并利用`encoding/xml`包将XML数据解析为Go结构体。文章详细讲解了如何定义结构体映射RSS的XML字段,例如Channel和Item,并通过xml标签绑定节点。同时,强调了错误处理和超时控制的重要性,确保程序的健壮性。本文提供完整示例代码,展示了如何抓取并打印文章标题、链接和发布时间等信息。对于更复杂的RSS抓取场景,建议使用`gofeed`等第三方库,它们能更好地处理不同格式的RSS源。掌握本文内容,你就能轻松构建自己的Golang RSS抓取器。

使用Go语言可通过net/http和encoding/xml包实现RSS抓取。首先定义结构体映射RSS的XML字段,包括Channel、Item等类型,利用xml标签绑定节点。通过http.Client发送带超时的请求获取响应体,再用xml.Unmarshal解析XML数据。需对网络错误和解析异常进行处理,确保程序健壮性。最终可遍历Items输出标题、链接、发布时间等信息。完整示例如下:1. 导入必要包;2. 定义结构体;3. 实现带超时的fetchRSS函数;4. 在main中调用并打印结果。对于复杂场景推荐使用gofeed等第三方库。

Golang如何实现简单的RSS抓取功能_Golang RSS抓取开发实践

在Go语言中实现一个简单的RSS抓取功能并不复杂。RSS(Really Simple Syndication)是一种基于XML的标准,常用于网站内容的订阅与分发,比如新闻站点、博客等。通过解析RSS源,我们可以获取文章标题、链接、发布时间和摘要等信息。

理解RSS结构

RSS文档本质上是XML格式,常见的结构包括</font>、<font color="#0000FF"><link></font>、<font color="#0000FF"><description></font>,以及包含每篇文章的<font color="#0000FF"><item></font>节点。例如:</p><pre><rss version="2.0"> <channel> <title>我的博客</title> <link>https://example.com</link> <item> <title>第一篇文章</title> <link>https://example.com/1</link> <pubDate>Mon, 01 Jan 2024 00:00:00 GMT</pubDate> <description>这是摘要内容</description> </item> </channel> </rss> </pre><p>要抓取这些数据,我们需要发送HTTP请求获取XML内容,然后将其解析为Go中的结构体。</p><h3><strong>使用标准库解析RSS</strong></h3><p>Go标准库没有直接支持RSS解析,但可以使用<font color="#0000FF">encoding/xml</font>包手动定义结构体来映射XML字段。以下是一个基础的结构体定义:</p><pre>type Item struct { Title string `xml:"title"` Link string `xml:"link"` Description string `xml:"description"` PubDate string `xml:"pubDate"` } <p>type Channel struct { Title string <code>xml:"title"</code> Link string <code>xml:"link"</code> Items []Item <code>xml:"item"</code> }</p><p>type RSS struct { Channel Channel <code>xml:"channel"</code> } </p></pre><p>接下来,使用<font color="#0000FF">net/http</font>获取RSS源内容,并用<font color="#0000FF">xml.Unmarshal</font>解析:</p><pre>func fetchRSS(url string) (*Channel, error) { resp, err := http.Get(url) if err != nil { return nil, err } defer resp.Body.Close() <pre class="brush:php;toolbar:false"><code>body, _ := io.ReadAll(resp.Body) var rss RSS if err := xml.Unmarshal(body, &amp;rss); err != nil { return nil, err } return &amp;rss.Channel, nil</code></pre><p>} </p></pre><h3><strong>添加错误处理与超时控制</strong></h3><p>实际开发中,网络请求可能失败或响应缓慢。建议设置HTTP客户端超时,避免程序卡住:</p><pre>client := &http.Client{ Timeout: 10 * time.Second, } resp, err := client.Get(url) </pre><p>同时,对XML解析过程进行容错处理。某些RSS源字段可能缺失或格式不规范,可使用指针类型或<font color="#0000FF">omitempty</font>标签提升健壮性。</p><h3><strong>完整示例:抓取并打印文章列表</strong></h3><p>将上述部分整合,可以写出一个完整的抓取程序:</p><pre>package main <p>import ( "encoding/xml" "fmt" "io" "net/http" "time" )</p><p>type Item struct { Title string <code>xml:"title"</code> Link string <code>xml:"link"</code> Description string <code>xml:"description"</code> PubDate string <code>xml:"pubDate"</code> }</p><p>type Channel struct { Title string <code>xml:"title"</code> Link string <code>xml:"link"</code> Items []Item <code>xml:"item"</code> }</p><p>type RSS struct { Channel Channel <code>xml:"channel"</code> }</p><p>func fetchRSS(url string) (<em>Channel, error) { client := &http.Client{Timeout: 10 </em> time.Second} resp, err := client.Get(url) if err != nil { return nil, err } defer resp.Body.Close()</p><pre class="brush:php;toolbar:false"><code>body, err := io.ReadAll(resp.Body) if err != nil { return nil, err } var rss RSS if err := xml.Unmarshal(body, &amp;rss); err != nil { return nil, err } return &amp;rss.Channel, nil</code></pre><p>}</p><p>func main() { channel, err := fetchRSS("<a target='_blank' href='https://www.17golang.com/gourl/?redirect=MDAwMDAwMDAwML57hpSHp6VpkrqbYLx2eayza4KafaOkbLS3zqSBrJvPsa5_0Ia6sWuR4Juaq6t9nq5roGCUgXuytMyero6Kn83GjHPXkraZo5qYYKa8n4agv3xtZJKQsKKu3LOifWSJ0bJ4mNuGqrluhq2Bqa-GlJ2-s4Flf32kbL-3s2uNrITfvoiHzobQsW4' rel='nofollow'>https://example.com/feed.xml</a>") if err != nil { fmt.Printf("抓取失败: %v\n", err) return }</p><pre>fmt.Printf("来源: %s\n", channel.Title) for _, item := range channel.Items { fmt.Printf("标题: %s\n", item.Title) fmt.Printf("链接: %s\n", item.Link) fmt.Printf("发布于: %s\n", item.PubDate) fmt.Println("---") }</pre><p>} </p></pre><p>基本上就这些。通过Go的<font color="#0000FF">net/http</font>和<font color="#0000FF">encoding/xml</font>包,我们可以轻松实现一个轻量级的RSS抓取器。如果项目更复杂,也可以考虑使用第三方库如<font color="#0000FF">github.com/mmcdole/gofeed</font>,它支持RSS和Atom,并自动处理多种格式差异。</p><p>理论要掌握,实操不能落!以上关于《Golang实现RSS抓取方法详解》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!</p> </div> <div class="labsList"> </div> </div> <!-- 最新阅读 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">相关阅读</div> <a href="/articlelist.html" class="more">更多></a> </div> <ul class="latestReadList"> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  2年前  |   <a href="/articletag/56_new_0_1.html" class="aLightGray" title="map">map</a> · <a href="/articletag/993_new_0_1.html" class="aLightGray" title="实践">实践</a> · <a href="/articletag/994_new_0_1.html" class="aLightGray" title="实现原理">实现原理</a> · <a href="/special/3_new_0_1.html" target="_blank" class="aLightGray" title="golang">golang</a> </div> <div class="tit lineOverflow"><a href="/article/10762.html" title="Golangmap实践及实现原理解析" class="aBlack">Golangmap实践及实现原理解析</a></div> <div class="opt"> <span><i class="view"></i>505</span> <span class="collectBtn user_collection" data-id="10762" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  1年前  |   <a href="/special/3_new_0_1.html" target="_blank" class="aLightGray" title="golang">golang</a> <a href="javascript:;" class="aLightGray" title="Go">Go</a> <a href="javascript:;" class="aLightGray" title="编程语言选择">编程语言选择</a> <a href="javascript:;" class="aLightGray" title="区别解析">区别解析</a> </div> <div class="tit lineOverflow"><a href="/article/80612.html" title="go和golang的区别解析:帮你选择合适的编程语言" class="aBlack">go和golang的区别解析:帮你选择合适的编程语言</a></div> <div class="opt"> <span><i class="view"></i>503</span> <span class="collectBtn user_collection" data-id="80612" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  2年前  |   <a href="/articletag/1668_new_0_1.html" class="aLightGray" title="try">try</a> · <a href="/articletag/1669_new_0_1.html" class="aLightGray" title="catch">catch</a> · <a href="/special/3_new_0_1.html" target="_blank" class="aLightGray" title="golang">golang</a> </div> <div class="tit lineOverflow"><a href="/article/11451.html" title="试了下Golang实现try catch的方法" class="aBlack">试了下Golang实现try catch的方法</a></div> <div class="opt"> <span><i class="view"></i>502</span> <span class="collectBtn user_collection" data-id="11451" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  2年前  |   <a href="javascript:;" class="aLightGray" title="并发 (concurrency)">并发 (concurrency)</a> <a href="javascript:;" class="aLightGray" title="Go语言 (Go language)">Go语言 (Go language)</a> <a href="javascript:;" class="aLightGray" title="服务器架构 (Server Architecture)">服务器架构 (Server Architecture)</a> </div> <div class="tit lineOverflow"><a href="/article/53565.html" title="如何在go语言中实现高并发的服务器架构" class="aBlack">如何在go语言中实现高并发的服务器架构</a></div> <div class="opt"> <span><i class="view"></i>502</span> <span class="collectBtn user_collection" data-id="53565" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  2年前  |   <a href="javascript:;" class="aLightGray" title="工作效率">工作效率</a> <a href="javascript:;" class="aLightGray" title="Go语言">Go语言</a> <a href="javascript:;" class="aLightGray" title="项目开发">项目开发</a> </div> <div class="tit lineOverflow"><a href="/article/72902.html" title="提升工作效率的Go语言项目开发经验分享" class="aBlack">提升工作效率的Go语言项目开发经验分享</a></div> <div class="opt"> <span><i class="view"></i>502</span> <span class="collectBtn user_collection" data-id="72902" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> </ul> </div> <!-- 最新阅读 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">最新阅读</div> <a href="/articlelist.html" class="more">更多></a> </div> <ul class="latestReadList"> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  2小时前  |   <a href="javascript:;" class="aLightGray" title="格式化输出">格式化输出</a> <a href="javascript:;" class="aLightGray" title="printf">printf</a> <a href="javascript:;" class="aLightGray" title="fmt库">fmt库</a> <a href="javascript:;" class="aLightGray" title="格式化动词">格式化动词</a> <a href="javascript:;" class="aLightGray" title="Stringer接口">Stringer接口</a> </div> <div class="tit lineOverflow"><a href="/article/404650.html" title="Golangfmt库用法与格式化技巧解析" class="aBlack">Golangfmt库用法与格式化技巧解析</a></div> <div class="opt"> <span><i class="view"></i>140</span> <span class="collectBtn user_collection" data-id="404650" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  2小时前  |   </div> <div class="tit lineOverflow"><a href="/article/404648.html" title="Golang配置Protobuf安装教程" class="aBlack">Golang配置Protobuf安装教程</a></div> <div class="opt"> <span><i class="view"></i>147</span> <span class="collectBtn user_collection" data-id="404648" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  3小时前  |   </div> <div class="tit lineOverflow"><a href="/article/404646.html" title="Golang中介者模式实现与通信解耦技巧" class="aBlack">Golang中介者模式实现与通信解耦技巧</a></div> <div class="opt"> <span><i class="view"></i>378</span> <span class="collectBtn user_collection" data-id="404646" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  3小时前  |   </div> <div class="tit lineOverflow"><a href="/article/404640.html" title="Golang多协程通信技巧分享" class="aBlack">Golang多协程通信技巧分享</a></div> <div class="opt"> <span><i class="view"></i>255</span> <span class="collectBtn user_collection" data-id="404640" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  3小时前  |   <a href="/special/3_new_0_1.html" target="_blank" class="aLightGray" title="golang">golang</a> <a href="javascript:;" class="aLightGray" title="错误处理">错误处理</a> <a href="javascript:;" class="aLightGray" title="自定义错误">自定义错误</a> <a href="javascript:;" class="aLightGray" title="errors.Is">errors.Is</a> <a href="javascript:;" class="aLightGray" title="预定义错误变量">预定义错误变量</a> </div> <div class="tit lineOverflow"><a href="/article/404622.html" title="Golang预定义错误变量全解析" class="aBlack">Golang预定义错误变量全解析</a></div> <div class="opt"> <span><i class="view"></i>287</span> <span class="collectBtn user_collection" data-id="404622" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  3小时前  |   </div> <div class="tit lineOverflow"><a href="/article/404618.html" title="Golang如何判断变量类型?" class="aBlack">Golang如何判断变量类型?</a></div> <div class="opt"> <span><i class="view"></i>393</span> <span class="collectBtn user_collection" data-id="404618" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  3小时前  |   </div> <div class="tit lineOverflow"><a href="/article/404607.html" title="Golang云原生微服务实战教程" class="aBlack">Golang云原生微服务实战教程</a></div> <div class="opt"> <span><i class="view"></i>310</span> <span class="collectBtn user_collection" data-id="404607" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  4小时前  |   </div> <div class="tit lineOverflow"><a href="/article/404557.html" title="Golang迭代器与懒加载结合应用" class="aBlack">Golang迭代器与懒加载结合应用</a></div> <div class="opt"> <span><i class="view"></i>110</span> <span class="collectBtn user_collection" data-id="404557" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  4小时前  |   <a href="javascript:;" class="aLightGray" title="性能优化">性能优化</a> <a href="javascript:;" class="aLightGray" title="并发安全">并发安全</a> <a href="javascript:;" class="aLightGray" title="Golangslicemap">Golangslicemap</a> <a href="javascript:;" class="aLightGray" title="预设容量">预设容量</a> <a href="javascript:;" class="aLightGray" title="指针拷贝">指针拷贝</a> </div> <div class="tit lineOverflow"><a href="/article/404542.html" title="Golangslicemap优化技巧分享" class="aBlack">Golangslicemap优化技巧分享</a></div> <div class="opt"> <span><i class="view"></i>412</span> <span class="collectBtn user_collection" data-id="404542" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  4小时前  |   </div> <div class="tit lineOverflow"><a href="/article/404540.html" title="Golang代理模式与访问控制实现解析" class="aBlack">Golang代理模式与访问控制实现解析</a></div> <div class="opt"> <span><i class="view"></i>423</span> <span class="collectBtn user_collection" data-id="404540" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  4小时前  |   </div> <div class="tit lineOverflow"><a href="/article/404503.html" title="Golang事件管理模块实现教程" class="aBlack">Golang事件管理模块实现教程</a></div> <div class="opt"> <span><i class="view"></i>274</span> <span class="collectBtn user_collection" data-id="404503" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/25_new_0_1.html" class="aLightGray" title="Golang">Golang</a> · <a href="/articlelist/44_new_0_1.html" class="aLightGray" title="Go教程">Go教程</a>   |  5小时前  |   <a href="/special/3_new_0_1.html" target="_blank" class="aLightGray" title="golang">golang</a> <a href="javascript:;" class="aLightGray" title="指针">指针</a> <a href="javascript:;" class="aLightGray" title="reflect包">reflect包</a> <a href="javascript:;" class="aLightGray" title="结构体字段动态赋值">结构体字段动态赋值</a> <a href="javascript:;" class="aLightGray" title="运行时修改">运行时修改</a> </div> <div class="tit lineOverflow"><a href="/article/404467.html" title="Golang结构体字段动态赋值技巧" class="aBlack">Golang结构体字段动态赋值技巧</a></div> <div class="opt"> <span><i class="view"></i>379</span> <span class="collectBtn user_collection" data-id="404467" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> </ul> </div> <!-- 课程推荐 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">课程推荐</div> <a href="/courselist.html" class="more">更多></a> </div> <ul class="classRecomList"> <li> <a href="/course/9.html" title="前端进阶之JavaScript设计模式" class="img_box"> <img src="/uploads/20221222/52fd0f23a454c71029c2c72d206ed815.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="前端进阶之JavaScript设计模式"> </a> <dl> <dt class="lineOverflow"> 前端进阶之JavaScript设计模式 </dt> <dd class="cont1 lineOverflow">设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。</dd> <dd class="cont2"> <a href="/course/9.html" title="前端进阶之JavaScript设计模式" class="toStudy">立即学习</a> <span>543次学习</span> </dd> </dl> </li> <li> <a href="/course/2.html" title="GO语言核心编程课程" class="img_box"> <img src="/uploads/20221221/634ad7404159bfefc6a54a564d437b5f.png" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="GO语言核心编程课程"> </a> <dl> <dt class="lineOverflow"> GO语言核心编程课程 </dt> <dd class="cont1 lineOverflow">本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。</dd> <dd class="cont2"> <a href="/course/2.html" title="GO语言核心编程课程" class="toStudy">立即学习</a> <span>516次学习</span> </dd> </dl> </li> <li> <a href="/course/74.html" title="简单聊聊mysql8与网络通信" class="img_box"> <img src="/uploads/20240103/bad35fe14edbd214bee16f88343ac57c.png" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="简单聊聊mysql8与网络通信"> </a> <dl> <dt class="lineOverflow"> 简单聊聊mysql8与网络通信 </dt> <dd class="cont1 lineOverflow">如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让</dd> <dd class="cont2"> <a href="/course/74.html" title="简单聊聊mysql8与网络通信" class="toStudy">立即学习</a> <span>500次学习</span> </dd> </dl> </li> <li> <a href="/course/57.html" title="JavaScript正则表达式基础与实战" class="img_box"> <img src="/uploads/20221226/bbe4083bb3cb0dd135fb02c31c3785fb.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="JavaScript正则表达式基础与实战"> </a> <dl> <dt class="lineOverflow"> JavaScript正则表达式基础与实战 </dt> <dd class="cont1 lineOverflow">在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。</dd> <dd class="cont2"> <a href="/course/57.html" title="JavaScript正则表达式基础与实战" class="toStudy">立即学习</a> <span>487次学习</span> </dd> </dl> </li> <li> <a href="/course/28.html" title="从零制作响应式网站—Grid布局" class="img_box"> <img src="/uploads/20221223/ac110f88206daeab6c0cf38ebf5fe9ed.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="从零制作响应式网站—Grid布局"> </a> <dl> <dt class="lineOverflow"> 从零制作响应式网站—Grid布局 </dt> <dd class="cont1 lineOverflow">本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。</dd> <dd class="cont2"> <a href="/course/28.html" title="从零制作响应式网站—Grid布局" class="toStudy">立即学习</a> <span>485次学习</span> </dd> </dl> </li> </ul> </div> </div> <!-- footer --> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <div class="footer"> <ul> <li ><a href="/" class="aLightGray"><em class="material-icons">home</em><span>首页</span></a></li> <li class="curr"><a href="/articlelist.html" class="aLightGray"><em class="material-icons">menu_book</em><span>阅读</span></a></li> <li ><a href="/courselist.html" class="aLightGray"><em class="material-icons">school</em><span>课程</span></a></li> <li ><a href="/ai.html" class="aLightGray"><em class="material-icons">smart_toy</em><span>AI助手</span></a></li> <li ><a href="/user.html" class="aLightGray"><em class="material-icons">person</em><span>我的</span></a></li> </ul> </div> <script src="/assets/js/require.js" data-main="/assets/js/require-frontend.js?v=1671101972"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?3dc5666f6478c7bf39cd5c91e597423d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>