Python入门学习:Beautiful Soup 4检查页面TDKH标签

  • 时间:
  • 浏览:0
  • 来源:知而不乎

环境:
Python 3.3.5
beautifulsoup4-4.3.2
Eclipse + PyDev

利用Beautiful Soup 4能够很方便的提取页面的标签,那我就来写一个检查页面TDKH标签的程序,首先来理一理思路,大致有一下的步骤:
1、打开网页获取源代码
2、将代码转为Beautiful Soup 4对象
3、开始取元素内容,这个分为几块:
TDKH1应该是有且唯一的,可能有三种情况:
1)标签缺失
2)有标签,内容缺失
3)有标签,有内容
最后,是其他可以重复的标签,简单输出

下面来仔细说说源代码:

首先要引入打开网页和Beautiful Soup 4操作相关的两个模块:

  1. import urllib.request
  2. from bs4 import BeautifulSoup

然后下载网页源码:

  1. url = 'http://www.zhaoyoucai.com'
  2. encode = 'utf-8'
  3. html = urllib.request.urlopen(url)
  4. page = html.read()
  5. page = page.decode(encode)

这里需要注意的是页面的编码,否则解码时候可能会报错。

下载了网页后,我代码转为Beautiful Soup 4对象,方便操作,只需一行代码:

  1. page = BeautifulSoup(page)

接下来可以开始操作,提取需要的元素内容了,我们先来提取的内容:</p><pre><code><ol class="linenums" ><li class="L0" ><span class="kwd" >if</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >title </span><span class="pun" >==</span><span class="pln" > </span><span class="kwd" >None</span><span class="pun" >:</span></li><li class="L1" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'缺失Title标签'</span><span class="pun" >)</span></li><li class="L2" ><span class="kwd" >elif</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >title</span><span class="pun" >.</span><span class="kwd" >string</span><span class="pln" > </span><span class="pun" >==</span><span class="pln" > </span><span class="kwd" >None</span><span class="pun" >:</span></li><li class="L3" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'Title标签无内容'</span><span class="pun" >)</span></li><li class="L4" ><span class="kwd" >else</span><span class="pun" >:</span></li><li class="L5" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'Title: '</span><span class="pun" >,</span><span class="pln" >page</span><span class="pun" >.</span><span class="pln" >title</span><span class="pun" >.</span><span class="kwd" >string</span><span class="pun" >)</span></li></ol></code></pre><p>正常情况下,直接用page.title.string就可以直接输出了<title>,但是还要考虑有一些网站没有设置Title的情况会报错,另外,写此测试程序的目的是为了检查网页TDKH关键标签元素,用于SEO简单诊断。</p><p>keywords和description的提取类似,这两个的标签是包含在<meta>的,先要找到name=’keywords’这样的meta标签,所以用到了Python的字典来匹配:</p><pre><code><ol class="linenums" ><li class="L0" ><span class="kwd" >if</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find</span><span class="pun" >(</span><span class="pln" >attrs</span><span class="pun" >={</span><span class="str" >"name"</span><span class="pun" >:</span><span class="pln" > </span><span class="str" >"keywords"</span><span class="pun" >})</span><span class="pln" > </span><span class="pun" >==</span><span class="pln" > </span><span class="kwd" >None</span><span class="pun" >:</span></li><li class="L1" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'缺失Keywods标签'</span><span class="pun" >)</span></li><li class="L2" ><span class="kwd" >elif</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find</span><span class="pun" >(</span><span class="pln" >attrs</span><span class="pun" >={</span><span class="str" >"name"</span><span class="pun" >:</span><span class="pln" > </span><span class="str" >"keywords"</span><span class="pun" >}).</span><span class="kwd" >get</span><span class="pun" >(</span><span class="str" >'content'</span><span class="pun" >)</span><span class="pln" > </span><span class="pun" >==</span><span class="pln" > </span><span class="kwd" >None</span><span class="pun" >:</span></li><li class="L3" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'Keywods标签错误,无内容'</span><span class="pun" >)</span></li><li class="L4" ><span class="kwd" >elif</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find</span><span class="pun" >(</span><span class="pln" >attrs</span><span class="pun" >={</span><span class="str" >"name"</span><span class="pun" >:</span><span class="pln" > </span><span class="str" >"keywords"</span><span class="pun" >}).</span><span class="kwd" >get</span><span class="pun" >(</span><span class="str" >'content'</span><span class="pun" >)</span><span class="pln" > </span><span class="pun" >==</span><span class="str" >''</span><span class="pun" >:</span></li><li class="L5" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'Keywods标签无内容'</span><span class="pun" >)</span></li><li class="L6" ><span class="kwd" >else</span><span class="pun" >:</span></li><li class="L7" ><span class="pln" > </span><span class="kwd" >print</span><span class="pln" > </span><span class="pun" >(</span><span class="str" >'Keywords:'</span><span class="pun" >,</span><span class="pln" >page</span><span class="pun" >.</span><span class="pln" >find</span><span class="pun" >(</span><span class="pln" >attrs</span><span class="pun" >={</span><span class="str" >"name"</span><span class="pun" >:</span><span class="pln" > </span><span class="str" >"keywords"</span><span class="pun" >}).</span><span class="pln" >attrs</span><span class="pun" >[</span><span class="str" >'content'</span><span class="pun" >])</span></li></ol></code></pre><p>同样需要先判断是否存在,不然报错,这里使用到了Beautiful Soup 4的find()和get()方法,find()返回第一个匹配的标签及内容,get()用于获取标签内属性的值,上面的get(‘content’)其实和attrs[‘content’]是一样的。<br>Description的前提类似keywords,不在赘述。</p><pre><code><ol class="linenums" ><li class="L0" ><span class="kwd" >if</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find</span><span class="pun" >(</span><span class="pln" >attrs</span><span class="pun" >={</span><span class="str" >"name"</span><span class="pun" >:</span><span class="pln" > </span><span class="str" >"description"</span><span class="pun" >})</span><span class="pln" > </span><span class="pun" >==</span><span class="pln" > </span><span class="kwd" >None</span><span class="pun" >:</span></li><li class="L1" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'缺失description标签'</span><span class="pun" >)</span></li><li class="L2" ><span class="kwd" >elif</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find</span><span class="pun" >(</span><span class="pln" >attrs</span><span class="pun" >={</span><span class="str" >"name"</span><span class="pun" >:</span><span class="pln" > </span><span class="str" >"description"</span><span class="pun" >}).</span><span class="kwd" >get</span><span class="pun" >(</span><span class="str" >'content'</span><span class="pun" >)</span><span class="pln" > </span><span class="pun" >==</span><span class="pln" > </span><span class="kwd" >None</span><span class="pun" >:</span></li><li class="L3" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'Description标签错误,无内容'</span><span class="pun" >)</span></li><li class="L4" ><span class="kwd" >elif</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find</span><span class="pun" >(</span><span class="pln" >attrs</span><span class="pun" >={</span><span class="str" >"name"</span><span class="pun" >:</span><span class="pln" > </span><span class="str" >"description"</span><span class="pun" >}).</span><span class="kwd" >get</span><span class="pun" >(</span><span class="str" >'content'</span><span class="pun" >)</span><span class="pln" > </span><span class="pun" >==</span><span class="str" >''</span><span class="pun" >:</span></li><li class="L5" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'Description标签无内容'</span><span class="pun" >)</span></li><li class="L6" ><span class="kwd" >else</span><span class="pun" >:</span></li><li class="L7" ><span class="pln" > </span><span class="kwd" >print</span><span class="pln" > </span><span class="pun" >(</span><span class="str" >'Description:'</span><span class="pun" >,</span><span class="pln" >page</span><span class="pun" >.</span><span class="pln" >find</span><span class="pun" >(</span><span class="pln" >attrs</span><span class="pun" >={</span><span class="str" >"name"</span><span class="pun" >:</span><span class="pln" > </span><span class="str" >"description"</span><span class="pun" >}).</span><span class="pln" >attrs</span><span class="pun" >[</span><span class="str" >'content'</span><span class="pun" >])</span></li></ol></code></pre><p>这里需要注意的是,标签本身大小写无关的,但是标签内容是有大小写的,例如name=’keyword’和NAME=’keyword’是一样的,但是name=’keyword’和name=’Keyword’就不一样了,比如网易(<a href="http://www.163.com">www.163.com</a>)的”Keywords”,会报错缺失Keywods标签,缺失description标签。因此以上的匹配还需要待优化,应该先用find_all()找到meta,再找判断有name,判断name的值用lower()转为小写是不是等于’keywords’,接着才输出来,涉及到很多的判断,在此先略过了。</p><p>接下来我们开始查找H1标签,因为一般SEO都会建议页面有且只有一个H1,所以我就写的复杂点:</p><pre><code><ol class="linenums" ><li class="L0" ><span class="pln" >list_h1 </span><span class="pun" >=</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find_all</span><span class="pun" >(</span><span class="str" >'h1'</span><span class="pun" >)</span></li><li class="L1" ><span class="pln" > </span></li><li class="L2" ><span class="kwd" >if</span><span class="pln" > len</span><span class="pun" >(</span><span class="pln" >list_h1</span><span class="pun" >)</span><span class="pln" > </span><span class="pun" >==</span><span class="pln" > </span><span class="lit" >0</span><span class="pun" >:</span></li><li class="L3" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'H1缺失'</span><span class="pun" >)</span></li><li class="L4" ><span class="kwd" >elif</span><span class="pln" > len</span><span class="pun" >(</span><span class="pln" >list_h1</span><span class="pun" >)</span><span class="pln" > </span><span class="pun" >==</span><span class="pln" > </span><span class="lit" >1</span><span class="pun" >:</span></li><li class="L5" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'有一个H1:'</span><span class="pun" >,</span><span class="pln" >list_h1</span><span class="pun" >[</span><span class="lit" >0</span><span class="pun" >].</span><span class="pln" >get_text</span><span class="pun" >(</span><span class="pln" >strip</span><span class="pun" >=</span><span class="kwd" >True</span><span class="pun" >))</span></li><li class="L6" ><span class="kwd" >else</span><span class="pun" >:</span></li><li class="L7" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'H1重复设置了,总共找到'</span><span class="pun" >,</span><span class="pln" >len</span><span class="pun" >(</span><span class="pln" >list_h1</span><span class="pun" >),</span><span class="str" >'个H1'</span><span class="pun" >)</span></li><li class="L8" ><span class="pln" > </span><span class="kwd" >for</span><span class="pln" > index</span><span class="pun" >,</span><span class="pln" >h1 </span><span class="kwd" >in</span><span class="pln" > enumerate</span><span class="pun" >(</span><span class="pln" >list_h1</span><span class="pun" >):</span></li><li class="L9" ><span class="pln" > </span><span class="kwd" >if</span><span class="pln" > len</span><span class="pun" >(</span><span class="pln" >h1</span><span class="pun" >)</span><span class="pln" > </span><span class="pun" >==</span><span class="pln" > </span><span class="lit" >0</span><span class="pun" >:</span></li><li class="L0" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'第%d个H1内容缺失'</span><span class="pun" >%(</span><span class="pln" >index</span><span class="pun" >+</span><span class="lit" >1</span><span class="pun" >))</span></li><li class="L1" ><span class="pln" > </span><span class="kwd" >else</span><span class="pun" >:</span></li><li class="L2" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'第%d个H1:'</span><span class="pun" >%(</span><span class="pln" >index</span><span class="pun" >+</span><span class="lit" >1</span><span class="pun" >),</span><span class="pln" >h1</span><span class="pun" >.</span><span class="pln" >get_text</span><span class="pun" >(</span><span class="pln" >strip</span><span class="pun" >=</span><span class="kwd" >True</span><span class="pun" >))</span></li></ol></code></pre><p>先用find_all()读取到列表,判断列表如果没有,就是缺少H1,有了在接着判断一个还是重复多个了,这里用到了get_text(strip=True)函数,提取标签内的文本,因为我在抓部分页面时候,有的H1是有子标签的,如:</p><pre><code><ol class="linenums" ><li class="L0" ><span class="tag" ><h1></span></li><li class="L1" ><span class="tag" ><span</span><span class="pln" > </span><span class="atn" >class</span><span class="pun" >=</span><span class="atv" >"yusi-mono"</span><span class="tag" >></span><span class="pln" >「知而不乎」</span><span class="tag" ></span></span></li><li class="L2" ><span class="tag" ><span</span><span class="pln" > </span><span class="atn" >class</span><span class="pun" >=</span><span class="atv" >"yusi-bloger"</span><span class="tag" >></span><span class="pln" >关注网络营销&互联网+IT技术</span><span class="tag" ></span></span></li><li class="L3" ><span class="tag" ></h1></span></li></ol></code></pre><p>如果直接使用其他string等输出会报错的。</p><p>最后是其他H元素不重要的了,简单的写了忽略判断:</p><pre><code><ol class="linenums" ><li class="L0" ><span class="kwd" >for</span><span class="pln" > h2 </span><span class="kwd" >in</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find_all</span><span class="pun" >(</span><span class="str" >'h2'</span><span class="pun" >):</span></li><li class="L1" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'H2:'</span><span class="pun" >,</span><span class="pln" >h2</span><span class="pun" >.</span><span class="pln" >get_text</span><span class="pun" >(</span><span class="pln" >strip</span><span class="pun" >=</span><span class="kwd" >True</span><span class="pun" >))</span></li><li class="L2" ><span class="kwd" >for</span><span class="pln" > h3 </span><span class="kwd" >in</span><span class="pln" > page</span><span class="pun" >.</span><span class="pln" >find_all</span><span class="pun" >(</span><span class="str" >'h3'</span><span class="pun" >):</span></li><li class="L3" ><span class="pln" > </span><span class="kwd" >print</span><span class="pun" >(</span><span class="str" >'H3:'</span><span class="pun" >,</span><span class="pln" >h3</span><span class="pun" >.</span><span class="pln" >get_text</span><span class="pun" >(</span><span class="pln" >strip</span><span class="pun" >=</span><span class="kwd" >True</span><span class="pun" >))</span></li></ol></code></pre><p>总结,此程序其实是学习Beautiful Soup 4的,在写的时候测试了很多函数,最终用到的也就同</p><div class="ad"><script type="text/javascript"> var cpro_id = "u3442257"; </script><script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/c.js"></script></div><p>猜你喜欢</p><div class="mipui-widget-media-body mipui-category-list-001"></div><div class="ad"><script type="text/javascript"> var sogou_ad_id=969461; var sogou_ad_height=90; var sogou_ad_width=640; </script><script type='text/javascript' src='http://images.sohu.com/cs/jsfile/js/c.js'></script></div><div class="mip-box-footer item-up-down-page "><ul class="clearfix list-unstyled"><div class="mipmb-page-item item-up-page"><p>上一篇</p><a href="http://zhaoyoucai.com/article/758509560f3188b1d15e6f54.html">http referer的作用与referer信息伪造</a></div><div class="mipmb-page-item item-down-page "><p>下一篇</p><a href="http://zhaoyoucai.com/article/67e0df22fb479e711ea391a0.html">Python入门学习:模拟浏览器查询百度获取结果</a></div></ul></div></section></section></main><aside class="col-lg-4 hidden-xs"><div class="mip-box noborder ad"><a href="http://zhaoyoucai.com/article/7ccbc1fe3738b17e9ca883f9.html"><img src="http://zhaoyoucai.com/uploads/article/2018/05/17/5afd32e2efe39.png"></a></div><section class="mip-box mip-box-default"><section class="mip-box-heading"><h3>最新文章</h3></section><section class="mip-box-body"><ul class="list-unstyled"><li class="li-box-list"><a href="http://zhaoyoucai.com/article/1acec830f398c16514026a49.html" data-type="mip" data-title="留给传统 DBA 的时间不多了?看饿了么如何构建数据库平台自动化运维" title="留给传统 DBA 的时间不多了?看饿了么如何构建数据库平台自动化运维">留给传统 DBA 的时间不多了?看饿了么如何构建数据库平台自动化运维</a><p>2018-08-16</p></li><li class="li-box-list"><a href="http://zhaoyoucai.com/article/c8d10f8b3059c04773456145.html" data-type="mip" data-title="【北斗星计划】借势营销怎么做?看这3家熊掌号案例就够了" title="【北斗星计划】借势营销怎么做?看这3家熊掌号案例就够了">【北斗星计划】借势营销怎么做?看这3家熊掌号案例就够了</a><p>2018-08-03</p></li><li class="li-box-list"><a href="http://zhaoyoucai.com/article/ed0a83d3fa44e27a9e1d3108.html" data-type="mip" data-title="星云激励计划全面升级 引入参与者共建共享星云链生态" title="星云激励计划全面升级 引入参与者共建共享星云链生态">星云激励计划全面升级 引入参与者共建共享星云链生态</a><p>2018-06-07</p></li><li class="li-box-list"><a href="http://zhaoyoucai.com/article/8b892213befc3f82f27d5911.html" data-type="mip" data-title="“星云激励计划”200万月度奖出炉 区块链新一代良性公链生态逐步形成" title="“星云激励计划”200万月度奖出炉 区块链新一代良性公链生态逐步形成">“星云激励计划”200万月度奖出炉 区块链新一代良性公链生态逐步形成</a><p>2018-06-07</p></li><li class="li-box-list"><a href="http://zhaoyoucai.com/article/50f2cc57a6bb04d5bb2fd067.html" data-type="mip" data-title="星云链市值排名中星云链如何从众多公链中脱颖而出 " title="星云链市值排名中星云链如何从众多公链中脱颖而出 ">星云链市值排名中星云链如何从众多公链中脱颖而出 </a><p>2018-06-06</p></li></ul></section></section><div class="mip-box noborder ad"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-gy-26+1d-6o+pj" data-ad-client="ca-pub-8412857118429554" data-ad-slot="3177593884"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div><div class="mip-box"><div class="mip-box-heading"><h3 class="title">最新标签</h3></div><div class="mip-box-body"><ul class="list-unstyled tags"><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/0b39ff70c8de78b0617796cf/" data-type="mip" data-title="DBA" title="DBA">DBA</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/c0e4feba3e6dad8c71ec6556/" data-type="mip" data-title="自动化运维" title="自动化运维">自动化运维</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/6a0dad19f4135eafd100ff4d/" data-type="mip" data-title="北斗星计划" title="北斗星计划">北斗星计划</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/6131a06386636a9047910392/" data-type="mip" data-title="借势营销" title="借势营销">借势营销</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/ecf62ac10bc6873fb83eda0d/" data-type="mip" data-title="熊掌号" title="熊掌号">熊掌号</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/870f2d99fea83b0a10a75196/" data-type="mip" data-title="星云激励计划" title="星云激励计划">星云激励计划</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/0e5835eb987d97e98afa1f1e/" data-type="mip" data-title="星云生态" title="星云生态">星云生态</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/b9d969b8706501b239dfe0ee/" data-type="mip" data-title="区块链" title="区块链">区块链</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/d46a22d749e2fcfd3c089f05/" data-type="mip" data-title="mytoken" title="mytoken">mytoken</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/3057eb29da1eee526d6b53e3/" data-type="mip" data-title="星云链市值" title="星云链市值">星云链市值</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/244d9b8a627ba54b25e89ce4/" data-type="mip" data-title="公链" title="公链">公链</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/29c98d5789b93acb8d9775c0/" data-type="mip" data-title="DApp" title="DApp">DApp</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/2553499c686ab738deac2ed9/" data-type="mip" data-title="NAS星云" title="NAS星云">NAS星云</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/6510f9073b9819488645b521/" data-type="mip" data-title="eos" title="eos">eos</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/ddc6df750d9402f1633b53b2/" data-type="mip" data-title="MtBlock" title="MtBlock">MtBlock</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/b4cada814c08e7ce5da4e2a9/" data-type="mip" data-title="社交网络" title="社交网络">社交网络</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/00dd8d73e6023c4f566d6b78/" data-type="mip" data-title="李笑来" title="李笑来">李笑来</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/4c5c7abe535054173e7fb819/" data-type="mip" data-title="NAS星云链" title="NAS星云链">NAS星云链</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/d6e3429cda3dcca514b95672/" data-type="mip" data-title="知识付费" title="知识付费">知识付费</a></li><li class="m-b-sm"><a href="http://zhaoyoucai.com/tag/712ae89ccac095df5965af46/" data-type="mip" data-title="投资" title="投资">投资</a></li></ul></div></div><div class="mip-box noborder ad"><script type="text/javascript"> var sogou_ad_id=969460; var sogou_ad_height=200; var sogou_ad_width=300; </script><script type='text/javascript' src='http://images.sohu.com/cs/jsfile/js/c.js'></script></div></aside></div></div></main><footer class="mipui-footer"><div class="container"><div class="friend-link hidden-xs"><ul></ul></div><p class="text-center mip-footer">©2018 <a data-type="mip" href="http://zhaoyoucai.com" data-title="知而不乎">知而不乎</a> 黔ICP备12000358号<a href="http://zhaoyoucai.com/sitemap.xml">网站地图</a><br class="visible-xs" /> Powered By <a data-type="mip" data-title='MIPCMS' href="http://www.mipcms.com" target="_blank">MIPCMS</a><mip-stats-baidu token="ea855a717e8b3cddc19fa6b373ec05c4"></mip-stats-baidu></p></div></footer><mip-fixed type="gototop"><mip-gototop></mip-gototop></mip-fixed><script src="https://c.mipcdn.com/static/v1/mip.js"></script><script src="https://c.mipcdn.com/static/v1/mip-stats-baidu/mip-stats-baidu.js"></script><script src="https://c.mipcdn.com/static/v1/mip-gototop/mip-gototop.js" type="text/javascript" charset="utf-8"></script><script src="https://c.mipcdn.com/static/v1/mip-history/mip-history.js" type="text/javascript" charset="utf-8"></script><script src="https://c.mipcdn.com/static/v1/mip-fixed/mip-fixed.js" type="text/javascript" charset="utf-8"></script><script src="https://c.mipcdn.com/extensions/platform/v1/mip-cambrian/mip-cambrian.js"></script></body></html>