资讯专栏INFORMATION COLUMN

Python爬虫利器:Beautiful Soup的使用(二)

王笑朝 / 1545人阅读

摘要:本次介绍使用对文档树的遍历。要注意的点在这里没有属性,因为它是同级节点中的第一个。字符串不是兄弟节点因为它们的父节点不同。和通过和的迭代器可以向前或向后访问文档的解析内容。

上一篇文章介绍了 BeautifulSoup 的安装以及基本对象类型。

本次介绍使用 bs4 对 HTML 文档树的遍历。

先把本文用到的例子贴上:

str = """


bs4 test

    

bs4 test

ab

"""

文档树的遍历:

文档树的遍历包括以下四部分:

子节点

父节点

兄弟节点

回退和前进

一、子节点

一个标签可能包含多个字符串或者其他标签,这些标签都属于子节点。要获取子节点,首先需要得到一个 Tag 对象:

获取一个 Tag 对象最简单的方式是用 bs4 对象点上要获取的标签的名字,同时支持链式调用。

bs4 = BeautifulSoup(str, "lxml")
div_tag = bs4.div
ul_tag = bs4.div.ul

.contents :

tag 对象的 .contents 属性可以将 tag 的子节点以列表的方式输出,不包含孙节点:

ul_tag.contents
# ["
", 
  • PHP
  • , " ",
  • Python
  • , " ",
  • Golang
  • , " "]

    字符串没有 .contents 属性,因为字符串没有子节点。

    .children:

    .children 生成器,可以对 tag 的直接子节点进行循环:

    for child in ul_tag.children:
        print(child)
    # 
  • PHP
  • Python
  • Golang
  • .descendants:

    .descendants 属性可以对所有 tag 的子孙节点进行递归循环:

    for child in ul_tag.descendants:
        print(child)
    

    .string:

    如果 tag 只有一个 NavigableString 类型子节点,那么这个 tag 可以使用 .string 得到子节点。

    title_tag = bs4.title 
    print(title_tag.string)  # bs4 test
    

    如果一个 tag 仅有一个子节点,那么这个 tag 也可以使用 .string 方法,输出结果与当前唯一子节点(也就是 title 节点)的 .string 结果相同。

    head_tag = bs4.head
    print(head_tag.string)  # bs4 test
    

    如果 tag 包含了多个子节点,tag 就无法确定 .string 方法应该调用哪个子节点的内容,所以输出结果是 None:

    print(div_tag.string) # None
    

    .strings 和 stripped_strings:

    对于上边 tag 包含了多个子节点的问题,可以使用 .strings 来循环获取:

    for str in div_tag.strings:
        print(str)
    # PHP   Python   Golang
    

    .stripped_strings 可以去除多余空白内容。

    二、父节点

    .parent:

    .parent 属性来获取某个标签或字符串的父节点,比如:

    print(title_tag.parent) # bs4 test
    h1_tag = bs4.h1
    print(h1_tag.string.parent) # 

    bs4 test

    .parents:

    .parents 属性可以递归得到元素的所有父辈节点。

    for p in h1_tag.parents:
        print(p.name)
    # body   html   [document]
    

    三、兄弟节点

    首先先看一下例子中的这一行:

    #

    abc

    p_tag = bs4.p print(p_tag.prettify()) #

    # # a # # # b # # # c # #

    都是

    的子节点,所以这三个可以被称为兄弟节点。

    .next_sibling 和 .previous_sibling:

    通过以上两个属性可以查询兄弟节点。

    print(p_tag.i.next_sibling) # c
    print(p_tag.i.previous_sibling) # a
    

    要注意的点:

    在这里没有 previous_sibling 属性,因为它是同级节点中的第一个。相反,没有 next_sibling 属性。

    字符串“a,b,c”不是兄弟节点,因为它们的父节点不同。

    由于我们上边的例子是写的一行,在实际中 .next_sibling 和 .previous_sibling 属性通常是字符串或空白。

    如果示例是如下方式则 .next_sibling 和 .previous_sibling 获取到的是空白。

    a b c

    .next_siblings 和 .previous_siblings:

    .next_siblings 和 .previous_siblings 属性可以对当前节点的兄弟节点迭代输出。

    for sibling in p_tag.span.next_siblings:
        print(repr(sibling))
    #"
    "
    #b
    #"
    "
    #c
    #"
    "
    
    for prev in p_tag.em.previous_siblings:
        print(repr(prev))
    #"
    "
    #b
    #"
    "
    #a
    #"
    "
    
    

    四、回退和前进

    HTML解析器把文档字符串转换成一连串的事件:
    打开标签 -> 打开标签 -> 打开</b>标签 -> 添加一段字符串 -> 关闭<b><title></b>标签 ...<br>Beautiful Soup提供了重现解析器初始化过程的方法。</p> <p><strong>.next_element 和 .previous_element:</strong></p> <p>.next_element 属性指向解析过程中下一个被解析的对象(字符串或tag)。</p> <p>print(h1_tag.next_element) # bs4 test<br>因为这个结果是在<b><h1></b>标签被解析之后的解析内容,所以输出字符串。</p> <pre>print(h1_tag.next_element.previous_element) # <h1>bs4 test</h1> </pre> <p>h1_tag.next_element 输出的是“bs4 test”字符串,因为 .previous_element 指向当前被解析的对象的前一个解析对象,所以这里输出<b><h1>bs4 test</h1>。</b></p> <p><strong>.next_elements 和 .previous_elements:</strong></p> <p>通过 .next_elements 和 .previous_elements 的迭代器可以向前或向后访问文档的解析内容。</p> <pre>str2 = "<p><span>a</span><i>b</i><em>c</em></p>" bs42 = BeautifulSoup(str2, "lxml") for element in bs42.p.next_elements: print(element) # <span>a</span> # a # <i>b</i> # b # <em>c</em> # c </pre> <p><strong>以上就是本文总结的使用 Beautiful Soup 对文档遍历的相关内容。</strong></p> <p><strong>有问题欢迎指出。关注我解锁更多 Python 干货哦!</strong></p> </div> <div class="mt-64 tags-seach" > <div class="tags-info"> <a style="width:120px;" title="GPU云服务器" href="https://www.ucloud.cn/site/product/gpu.html">GPU云服务器</a> <a style="width:120px;" title="云服务器" href="https://www.ucloud.cn/site/active/kuaijiesale.html?ytag=seo">云服务器</a> <a style="width:120px;" title="python开发利器" href="https://www.ucloud.cn/yun/tag/pythonkaifaliqi/">python开发利器</a> <a style="width:120px;" title="python爬虫使用代理ip" href="https://www.ucloud.cn/yun/tag/pythonpachongshiyongdailiip/">python爬虫使用代理ip</a> <a style="width:120px;" title="python爬虫的" href="https://www.ucloud.cn/yun/tag/pythonpachongde/">python爬虫的</a> <a style="width:120px;" title="python的爬虫" href="https://www.ucloud.cn/yun/tag/pythondepachong/">python的爬虫</a> </div> </div> <div class="entry-copyright mb-30"> <p class="mb-15"> 文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。</p> <p>转载请注明本文地址:https://www.ucloud.cn/yun/42546.html</p> </div> <ul class="pre-next-page"> <li class="ellipsis"><a class="hpf" href="https://www.ucloud.cn/yun/42545.html">上一篇:python基础知识之元组</a></li> <li class="ellipsis"><a class="hpf" href="https://www.ucloud.cn/yun/42547.html">下一篇:Reinventing the wheel:决策树算法的实现</a></li> </ul> </div> <div class="about_topicone-mid"> <h3 class="top-com-title mb-0"><span data-id="0">相关文章</span></h3> <ul class="com_white-left-mid atricle-list-box"> <li> <div class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/38032.html"><b><em>Python</em><em>爬虫</em><em>利器</em><em>二</em>之<em>Beautiful</em> <em>Soup</em><em>的</em>用法</b></a></h2> <p class="ellipsis2 good">摘要:官方解释如下提供一些简单的式的函数用来处理导航搜索修改分析树等功能。废话不多说,我们来试一下吧安装目前已经停止开发,推荐在现在的项目中使用,不过它已经被移植到了,也就是说导入时我们需要。 上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Be...</p> <div class="com_white-left-info"> <div class="com_white-left-infol"> <a href="https://www.ucloud.cn/yun/u-1275.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/12/small_000001275.jpg" alt=""><span class="layui-hide64">cjie</span></a> <time datetime="">2019-07-25 10:33</time> <span><i class="fa fa-commenting"></i>评论0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/42569.html"><b><em>Python</em> <em>爬虫</em><em>利器</em> <em>Beautiful</em> <em>Soup</em> 4 之文档树<em>的</em>搜索</b></a></h2> <p class="ellipsis2 good">摘要:前面两篇介绍的是的基本对象类型和文档树的遍历本篇介绍的文档搜索搜索文档树主要使用两个方法和是用于搜索节点中所有符合过滤条件的节点那么它支持哪些过滤器呢过滤器的类型字符串正则表达式列表方法字符串查找文档中所有的标签正则表达式找出所有以开头的标 前面两篇介绍的是 Beautiful Soup 4 的基本对象类型和文档树的遍历, 本篇介绍 Beautiful Soup 4 的文档搜索 搜索文...</p> <div class="com_white-left-info"> <div class="com_white-left-infol"> <a href="https://www.ucloud.cn/yun/u-1569.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/15/small_000001569.jpg" alt=""><span class="layui-hide64">darryrzhong</span></a> <time datetime="">2019-07-30 18:01</time> <span><i class="fa fa-commenting"></i>评论0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/42083.html"><b><em>Python</em> <em>爬虫</em>入门(一)——爬取糗百</b></a></h2> <p class="ellipsis2 good">摘要:爬取糗百内容代码地址微信公众号智能制造社区,欢迎关注。爬虫程序一般是通过模拟浏览器对相应发出请求,获取数据,并通过正则等手段匹配出页面中我们所需的数据。库基本介绍是学习爬虫的一大利器。 爬取糗百内容 GitHub 代码地址https://github.com/injetlee/Python/blob/master/qiubai_crawer.py 微信公众号:【智能制造社区】,欢迎关注...</p> <div class="com_white-left-info"> <div class="com_white-left-infol"> <a href="https://www.ucloud.cn/yun/u-169.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/01/small_000000169.jpg" alt=""><span class="layui-hide64">legendaryedu</span></a> <time datetime="">2019-07-30 17:13</time> <span><i class="fa fa-commenting"></i>评论0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/38430.html"><b>零基础如何学<em>爬虫</em>技术</b></a></h2> <p class="ellipsis2 good">摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...</p> <div class="com_white-left-info"> <div class="com_white-left-infol"> <a href="https://www.ucloud.cn/yun/u-128.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/01/small_000000128.jpg" alt=""><span class="layui-hide64">KunMinX</span></a> <time datetime="">2019-07-25 11:29</time> <span><i class="fa fa-commenting"></i>评论0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/43349.html"><b><em>Beautiful</em><em>Soup</em>:网页解析<em>利器</em>上手简介</b></a></h2> <p class="ellipsis2 good">摘要:文档写得很清楚,也有中文版,你只要看了最初的一小部分,就可以在代码中派上用场了。 关于爬虫的案例和方法,我们已讲过许多。不过在以往的文章中,大多是关注在 如何把网页上的内容抓取下来 。今天我们来分享下,当你已经把内容爬下来之后, 如何提取出其中你需要的具体信息 。 网页被抓取下来,通常就是 str 字符串类型的对象 ,要从里面寻找信息,最直接的想法就是直接通过字符串的 find 方法 ...</p> <div class="com_white-left-info"> <div class="com_white-left-infol"> <a href="https://www.ucloud.cn/yun/u-601.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/06/small_000000601.jpg" alt=""><span class="layui-hide64">Carl</span></a> <time datetime="">2019-07-31 10:09</time> <span><i class="fa fa-commenting"></i>评论0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> </ul> </div> <div class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>发表评论</span></h3> <div class="xcp-publish-main flex_box_zd"> <div class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陆后可评论</a> </div> </div> </div> <div class="site-box-content"> <div class="site-content-title"> <h3 class="top-com-title mb-64"><span>0条评论</span></h3> </div> <div class="pages"></ul></div> </div> </div> <div class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div class=""> <div class="com_layuiright-box user-msgbox"> <a href="https://www.ucloud.cn/yun/u-41.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/00/small_000000041.jpg" alt=""></a> <h3><a href="https://www.ucloud.cn/yun/u-41.html" rel="nofollow">王笑朝</a></h3> <h6>男<span>|</span>高级讲师</h6> <div class="flex_box_zd user-msgbox-atten"> <a href="javascript:attentto_user(41)" id="attenttouser_41" class="grad follow-btn notfollow attention">我要关注</a> <a href="javascript:login()" title="发私信" >我要私信</a> </div> <div class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="https://www.ucloud.cn/yun/ut-41.html" class="box_hxjz">阅读更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/124990.html">#yyds干货盘点# Python - 第一个爬虫</a></h3> <p>阅读 3509<span>·</span>2021-11-25 09:43</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/119569.html">新的恶意软件家族使用CLFS日志文件逃避检测</a></h3> <p>阅读 1266<span>·</span>2021-09-08 09:45</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/119403.html">2021-09-06_address_list(通讯录)</a></h3> <p>阅读 2642<span>·</span>2021-09-07 09:59</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/118036.html">#八月优惠#极光KVM:VPS价格全部下调,洛杉矶、香港CN2直连全部5折优惠</a></h3> <p>阅读 1501<span>·</span>2021-08-09 13:45</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/117063.html">使用inline-flex让容器自适应宽度</a></h3> <p>阅读 3338<span>·</span>2019-08-30 15:54</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/114428.html">CSS 居中</a></h3> <p>阅读 696<span>·</span>2019-08-29 18:35</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/114239.html">原生js造轮子之模仿JQ的slideDown()与slideUp()</a></h3> <p>阅读 512<span>·</span>2019-08-29 17:18</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/112970.html">iOS Safari 中点击事件失效的解决方法</a></h3> <p>阅读 991<span>·</span>2019-08-29 14:10</p></li> </ul> </div> <!-- 文章详情右侧广告--> <div class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活动</span></h6> <div class="com_adbox"> <div class="layui-carousel" id="right-item"> <div carousel-item> <div> <a href="https://www.ucloud.cn/site/active/kuaijiesale.html?ytag=seo" rel="nofollow"> <img src="https://www.ucloud.cn/yun/data/attach/240625/2rTjEHmi.png" alt="云服务器"> </a> </div> <div> <a href="https://www.ucloud.cn/site/product/gpu.html" rel="nofollow"> <img src="https://www.ucloud.cn/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服务器"> </a> </div> </div> </div> </div> <!-- banner结束 --> <div class="adhtml"> </div> <script> $(function(){ $.ajax({ type: "GET", url:"https://www.ucloud.cn/yun/ad/getad/1.html", cache: false, success: function(text){ $(".adhtml").html(text); } }); }) </script> </div> </div> </div> </div> </div> </section> <!-- wap拉出按钮 --> <div class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩层 --> <div class="site-mobile-shade"></div> <!--付费阅读 --> <div id="payread"> <div class="layui-form-item">阅读需要支付1元查看</div> <div class="layui-form-item"><button class="btn-right">支付并查看</button></div> </div> <script> var prei=0; $(".site-seo-depict pre").each(function(){ var html=$(this).html().replace("<code>","").replace("</code>","").replace('<code class="javascript hljs" codemark="1">',''); $(this).attr('data-clipboard-text',html).attr("id","pre"+prei); $(this).html("").append("<code>"+html+"</code>"); prei++; }) $(".site-seo-depict img").each(function(){ if($(this).attr("src").indexOf('data:image/svg+xml')!= -1){ $(this).remove(); } }) $("LINK[href*='style-49037e4d27.css']").remove(); $("LINK[href*='markdown_views-d7a94ec6ab.css']").remove(); layui.use(['jquery', 'layer','code'], function(){ $("pre").attr("class","layui-code"); $("pre").attr("lay-title",""); $("pre").attr("lay-skin",""); layui.code(); $(".layui-code-h3 a").attr("class","copycode").html("复制代码 ").attr("onclick","copycode(this)"); }); function copycode(target){ var id=$(target).parent().parent().attr("id"); var clipboard = new ClipboardJS("#"+id); clipboard.on('success', function(e) { e.clearSelection(); alert("复制成功") }); clipboard.on('error', function(e) { alert("复制失败") }); } //$(".site-seo-depict").html($(".site-seo-depict").html().slice(0, -5)); </script> <link rel="stylesheet" type="text/css" href="https://www.ucloud.cn/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css"> <script src="https://www.ucloud.cn/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script> <script src="https://www.ucloud.cn/yun/static/js/clipboard.js"></script> <script>hljs.initHighlightingOnLoad();</script> <script> function setcode(){ var _html=''; document.querySelectorAll('pre code').forEach((block) => { var _tmptext=$.trim($(block).text()); if(_tmptext!=''){ _html=_html+_tmptext; console.log(_html); } }); } </script> <script> function payread(){ layer.open({ type: 1, title:"付费阅读", shadeClose: true, content: $('#payread') }); } // 举报 function jupao_tip(){ layer.open({ type: 1, title:false, shadeClose: true, content: $('#jubao') }); } $(".getcommentlist").click(function(){ var _id=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); $("#articlecommentlist"+_id).toggleClass("hide"); var flag=$("#articlecommentlist"+_id).attr("dataflag"); if(flag==1){ flag=0; }else{ flag=1; //加载评论 loadarticlecommentlist(_id,_tid); } $("#articlecommentlist"+_id).attr("dataflag",flag); }) $(".add-comment-btn").click(function(){ var _id=$(this).attr("dataid"); $(".formcomment"+_id).toggleClass("hide"); }) $(".btn-sendartcomment").click(function(){ var _aid=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); var _content=$.trim($(".commenttext"+_aid).val()); if(_content==''){ alert("评论内容不能为空"); return false; } var touid=$("#btnsendcomment"+_aid).attr("touid"); if(touid==null){ touid=0; } addarticlecomment(_tid,_aid,_content,touid); }) $(".button_agree").click(function(){ var supportobj = $(this); var tid = $(this).attr("id"); $.ajax({ type: "GET", url:"https://www.ucloud.cn/yun/index.php?topic/ajaxhassupport/" + tid, cache: false, success: function(hassupport){ if (hassupport != '1'){ $.ajax({ type: "GET", cache:false, url: "https://www.ucloud.cn/yun/index.php?topic/ajaxaddsupport/" + tid, success: function(comments) { supportobj.find("span").html(comments+"人赞"); } }); }else{ alert("您已经赞过"); } } }); }); function attenquestion(_tid,_rs){ $.ajax({ //提交数据的类型 POST GET type:"POST", //提交的网址 url:"https://www.ucloud.cn/yun/favorite/topicadd.html", //提交的数据 data:{tid:_tid,rs:_rs}, //返回数据的格式 datatype: "json",//"xml", "html", "script", "json", "jsonp", "text". //在请求之前调用的函数 beforeSend:function(){}, //成功返回之后调用的函数 success:function(data){ var data=eval("("+data+")"); console.log(data) if(data.code==2000){ layer.msg(data.msg,function(){ if(data.rs==1){ //取消收藏 $(".layui-layer-tips").attr("data-tips","收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart-o"></i>'); } if(data.rs==0){ //收藏成功 $(".layui-layer-tips").attr("data-tips","已收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart"></i>') } }) }else{ layer.msg(data.msg) } } , //调用执行后调用的函数 complete: function(XMLHttpRequest, textStatus){ postadopt=true; }, //调用出错执行的函数 error: function(){ //请求出错处理 postadopt=false; } }); } </script> <footer> <div class="layui-container"> <div class="flex_box_zd"> <div class="left-footer"> <h6><a href="https://www.ucloud.cn/"><img src="https://www.ucloud.cn/yun/static/theme/ukd//images/logo.png" alt="UCloud (优刻得科技股份有限公司)"></a></h6> <p>UCloud (优刻得科技股份有限公司)是中立、安全的云计算服务平台,坚持中立,不涉足客户业务领域。公司自主研发IaaS、PaaS、大数据流通平台、AI服务平台等一系列云计算产品,并深入了解互联网、传统企业在不同场景下的业务需求,提供公有云、混合云、私有云、专有云在内的综合性行业解决方案。</p> </div> <div class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud与云服务</h6> <p><a href="https://www.ucloud.cn/site/about/intro/">公司介绍</a></p> <p><a href="https://zhaopin.ucloud.cn/" >加入我们</a></p> <p><a href="https://www.ucloud.cn/site/ucan/onlineclass/">UCan线上公开课</a></p> <p><a href="https://www.ucloud.cn/site/solutions.html" >行业解决方案</a></p> <p><a href="https://www.ucloud.cn/site/pro-notice/">产品动态</a></p> </li> <li> <h6>友情链接</h6> <p><a href="https://www.compshare.cn/?ytag=seo">GPU算力平台</a></p> <p><a href="https://www.ucloudstack.com/?ytag=seo">UCloud私有云</a></p> <p><a href="https://www.surfercloud.com/">SurferCloud</a></p> <p><a href="https://www.uwin-link.com/">工厂仿真软件</a></p> <p><a href="https://pinex.it/">Pinex</a></p> <p><a href="https://www.picpik.ai/zh">AI绘画</a></p> </li> <li> <h6>社区栏目</h6> <p><a href="https://www.ucloud.cn/yun/column/index.html">专栏文章</a></p> <p><a href="https://www.ucloud.cn/yun/udata/">专题地图</a></p> </li> <li> <h6>常见问题</h6> <p><a href="https://www.ucloud.cn/site/ucsafe/notice.html" >安全中心</a></p> <p><a href="https://www.ucloud.cn/site/about/news/recent/" >新闻动态</a></p> <p><a href="https://www.ucloud.cn/site/about/news/report/">媒体动态</a></p> <p><a href="https://www.ucloud.cn/site/cases.html">客户案例</a></p> <p><a href="https://www.ucloud.cn/site/notice/">公告</a></p> </li> <li> <span><img src="https://static.ucloud.cn/7a4b6983f4b94bcb97380adc5d073865.png" alt="优刻得"></span> <p>扫扫了解更多</p></div> </div> <div class="copyright">Copyright © 2012-2023 UCloud 优刻得科技股份有限公司<i>|</i><a rel="nofollow" href="http://beian.miit.gov.cn/">沪公网安备 31011002000058号</a><i>|</i><a rel="nofollow" href="http://beian.miit.gov.cn/"></a> 沪ICP备12020087号-3</a><i>|</i> <script type="text/javascript" src="https://gyfk12.kuaishang.cn/bs/ks.j?cI=197688&fI=125915" charset="utf-8"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?290c2650b305fc9fff0dbdcafe48b59d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-DZSMXQ3P9N"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-DZSMXQ3P9N'); </script> <script> (function(){ var el = document.createElement("script"); el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?99f50ea166557aed914eb4a66a7a70a4709cbb98a54ecb576877d99556fb4bfc3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a"; el.id = "ttzz"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(el, s); })(window) </script></div> </div> </footer> </body> <script src="https://www.ucloud.cn/yun/static/theme/ukd/js/common.js"></script> <<script type="text/javascript"> $(".site-seo-depict *,.site-content-answer-body *,.site-body-depict *").css("max-width","100%"); </script> </html>