【扇贝编程】使用Selenium模拟浏览器获取动态内容笔记
文章目录
- selenium
- 安装 selenium
- 下载浏览器驱动
- 获取数据
- 处理数据
- 查找一个元素
- 查找所有符合条件的元素
- 控制浏览器
selenium
selenium是爬虫的好帮手, 可以控制你的浏览器,模仿人浏览网页,从而获取数据,自动操作等。
我们只要让 selenium 自动控制浏览器,实现爬取数据、自动抢票……
selenium要打开浏览器并控制它,占用的资源会更多,爬取数据的效率也会有所降低。
安装 selenium
pip install selenium
下载浏览器驱动
根据你使用的浏览器(如 Chrome、Firefox 等),下载相应的驱动程序。
- Chrome:使用 ChromeDriver,可以从 ChromeDriver - WebDriver for Chrome 下载与你的
- Chrome 浏览器版本相匹配的驱动程序。
- Firefox:使用 GeckoDriver,可以从 GitHub - mozilla/geckodriver 下载。
- Internet Explorer:使用 IEDriverServer,可以从 Selenium with Internet
Explorer - Selenium Docs 下载。
Edge:如果你的 Edge 浏览器是基于 Chromium 的,你可以使用 ChromeDriver。对于旧版
下面以Edge为例,可以从 Microsoft Edge WebDriver 页面下载对应版本的驱动。
首先打开Edge浏览器,依次点击浏览器右上角的 三个点
- 帮助和反馈
- 关于Microsoft Edge
,查看edge版本
我的版本是 128.0.2739.42 (正式版本) (64 位)
,下载第一个。
我们要把压缩包里的浏览器驱动放到 Python 所在安装目录里。
根据下面的操作确认Python 所在安装目录。
import sys
print(sys.executable)
D:\anaconda\envs\test\python.exe
将末尾的 \python.exe去掉,就是 Python 所在的目录。
为了验证驱动是否安装成功,运行下列代码:
from selenium import webdriver
from selenium.webdriver.edge.service import Service
# 指定 Edge WebDriver 的路径
service = Service(executable_path=r'D:\anaconda\envs\test\msedgedriver.exe')
browser = webdriver.Edge(service=service)
# 打开一个页面
browser.get('https://www.zhihu.com/')
# 关闭浏览器
browser.quit()
如果已经将 Edge WebDriver
的可执行文件路径添加到了系统的 PATH
环境变量中,那么你在 Selenium
中使用 Edge 浏览器时就不需要指定 executable_path
了。你可以直接创建一个 WebDriver
实例,如下所示:
from selenium import webdriver
# 创建一个 Edge WebDriver 实例
browser = webdriver.Edge()
# 打开一个页面
browser.get('https://www.zhihu.com/')
# 打印页面标题以确认成功连接
print(browser.title)
# 关闭浏览器
browser.quit()
如果安装成功,会看到知乎页面弹出又消失的一个过程,且输出知乎 - 有问题,就会有答案
。
获取数据
在这里,browser
是我们实例化的浏览器。我们将网址传给 browser
对象的 get()
方法,即可打开对应的网页。最后调用 quit()
方法将浏览器关闭。
接下来用 driver对象的 page_source
属性来获取网页的源代码。值得注意的是,用 selenium
获取的网页源代码是数据加载完毕后最终的源代码,也就是网页加载后通过API
获取的数据也在这个源代码中。
用 selenium
打印出博客的网页源代码:
from selenium import webdriver
from selenium.webdriver.edge.options import Options
options = Options()
options.use_chromium = True
options.add_argument('--ignore-certificate-errors')
browser = webdriver.Edge(options=options)
browser.get('https://wpblog.x0y1.com')
# 打印出网页源代码
print(browser.page_source)
browser.quit()
源代码如下:
<html lang="zh-CN" class="js svg background-fixed"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="profile" href="http://gmpg.org/xfn/11">
<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
<title>扇贝编程 – 爬虫示例站点</title>
<link rel="dns-prefetch" href="//wpblog.x0y1.com">
<link rel="dns-prefetch" href="//s.w.org">
<link rel="alternate" type="application/rss+xml" title="扇贝编程 » Feed" href="https://wpblog.x0y1.com/?feed=rss2">
<link rel="alternate" type="application/rss+xml" title="扇贝编程 » 评论Feed" href="https://wpblog.x0y1.com/?feed=comments-rss2">
<script type="text/javascript">
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/11\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/11\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/wpblog.x0y1.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.9.26"}};
!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])?!1:!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([55358,56760,9792,65039],[55358,56760,8203,9792,65039])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings);
</script><script src="https://wpblog.x0y1.com/wp-includes/js/wp-emoji-release.min.js?ver=4.9.26" type="text/javascript" defer=""></script>
<style type="text/css">
img.wp-smiley,
img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 .07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
</style>
<link rel="stylesheet" id="twentyseventeen-style-css" href="https://wpblog.x0y1.com/wp-content/themes/twentyseventeen/style.css?ver=20190507" type="text/css" media="all">
<link rel="stylesheet" id="twentyseventeen-block-style-css" href="https://wpblog.x0y1.com/wp-content/themes/twentyseventeen/assets/css/blocks.css?ver=20190105" type="text/css" media="all">
<!--[if lt IE 9]>
<link rel='stylesheet' id='twentyseventeen-ie8-css' href='https://wpblog.x0y1.com/wp-content/themes/twentyseventeen/assets/css/ie8.css?ver=20161202' type='text/css' media='all' />
<![endif]-->
<!--[if lt IE 9]>
<script type='text/javascript' src='https://wpblog.x0y1.com/wp-content/themes/twentyseventeen/assets/js/html5.js?ver=20161020'></script>
<![endif]-->
<script type="text/javascript" src="https://wpblog.x0y1.com/wp-includes/js/jquery/jquery.js?ver=1.12.4"></script>
<script type="text/javascript" src="https://wpblog.x0y1.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1"></script>
<link rel="https://api.w.org/" href="https://wpblog.x0y1.com/index.php?rest_route=/">
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://wpblog.x0y1.com/xmlrpc.php?rsd">
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://wpblog.x0y1.com/wp-includes/wlwmanifest.xml">
<meta name="generator" content="WordPress 4.9.26">
<link rel="icon" href="https://wpblog.x0y1.com/wp-content/uploads/2019/11/cropped-2-32x32.png" sizes="32x32">
<link rel="icon" href="https://wpblog.x0y1.com/wp-content/uploads/2019/11/cropped-2-192x192.png" sizes="192x192">
<link rel="apple-touch-icon-precomposed" href="https://wpblog.x0y1.com/wp-content/uploads/2019/11/cropped-2-180x180.png">
<meta name="msapplication-TileImage" content="https://wpblog.x0y1.com/wp-content/uploads/2019/11/cropped-2-270x270.png">
<style type="text/css" id="wp-custom-css">
code {
padding: 1px 4px;
color: #d14;
background-color: #fbfbfb;
border: 1px solid #e1e1e8;
white-space: nowrap;
border-radius: 3px;
} </style>
</head>
<body class="home blog wp-custom-logo hfeed has-header-image has-sidebar colors-light">
<div id="page" class="site">
<a class="skip-link screen-reader-text" href="#content">跳至内容</a>
<header id="masthead" class="site-header" role="banner">
<div class="custom-header" style="margin-bottom: 0px;">
<div class="custom-header-media">
<div id="wp-custom-header" class="wp-custom-header"><img src="https://wpblog.x0y1.com/wp-content/themes/twentyseventeen/assets/images/header.jpg" width="2000" height="1200" alt="扇贝编程"></div> </div>
<div class="site-branding" style="margin-bottom: 0px;">
<div class="wrap">
<a href="https://wpblog.x0y1.com/" class="custom-logo-link" rel="home" itemprop="url"><img width="100" height="56" src="https://wpblog.x0y1.com/wp-content/uploads/2019/11/1.png" class="custom-logo" alt="扇贝编程" itemprop="logo" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px"></a>
<div class="site-branding-text">
<h1 class="site-title"><a href="https://wpblog.x0y1.com/" rel="home">扇贝编程</a></h1>
<p class="site-description">爬虫示例站点</p>
</div><!-- .site-branding-text -->
<a href="#content" class="menu-scroll-down"><svg class="icon icon-arrow-right" aria-hidden="true" role="img"> <use href="#icon-arrow-right" xlink:href="#icon-arrow-right"></use> </svg><span class="screen-reader-text">向下滚动到内容</span></a>
</div><!-- .wrap -->
</div><!-- .site-branding -->
</div><!-- .custom-header -->
</header><!-- #masthead -->
<div class="site-content-contain">
<div id="content" class="site-content">
<div class="wrap">
<header class="page-header">
<h2 class="page-title">文章</h2>
</header>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<article id="post-34" class="post-34 post type-post status-publish format-standard sticky hentry category-python">
<svg class="icon icon-thumb-tack" aria-hidden="true" role="img"> <use href="#icon-thumb-tack" xlink:href="#icon-thumb-tack"></use> </svg> <header class="entry-header">
<div class="entry-meta"><span class="screen-reader-text">发布于</span><a href="https://wpblog.x0y1.com/?p=34" rel="bookmark"><time class="entry-date published" datetime="2019-09-17T16:11:50+00:00">9月 17, 2019</time><time class="updated" datetime="2020-08-25T07:18:06+00:00">8月 25, 2020</time></a></div><!-- .entry-meta --><h3 class="entry-title"><a href="https://wpblog.x0y1.com/?p=34" rel="bookmark">Python 环境搭建指南</a></h3> </header><!-- .entry-header -->
<div class="entry-content">
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote">
<p>近期在群里看到有小伙伴问,“如何脱离扇贝的环境,在自己的电脑里运行 Python 代码?”。是的,这是一个很好的问题。我们学 Python 是要在真实环境当中使用的,接下来我来给大家介绍一下搭建 Python 环境的常用方法。</p>
</blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:more --><br>
<a href="https://wpblog.x0y1.com/?p=34#more-34" class="more-link">继续阅读<span class="screen-reader-text">“Python 环境搭建指南”</span></a></p>
</div><!-- .entry-content -->
</article><!-- #post-34 -->
<article id="post-211" class="post-211 post type-post status-publish format-standard hentry category-python">
<header class="entry-header">
<div class="entry-meta"><span class="screen-reader-text">发布于</span><a href="https://wpblog.x0y1.com/?p=211" rel="bookmark"><time class="entry-date published" datetime="2021-08-30T05:41:25+00:00">8月 30, 2021</time><time class="updated" datetime="2021-08-30T05:44:58+00:00">8月 30, 2021</time></a></div><!-- .entry-meta --><h3 class="entry-title"><a href="https://wpblog.x0y1.com/?p=211" rel="bookmark">编程实战 – 电商交易流程分析</a></h3> </header><!-- .entry-header -->
<div class="entry-content">
<p><!-- wp:table {"hasFixedLayout":true,"className":"is-style-stripes"} --></p>
<figure class="wp-block-table is-style-stripes">
<table class="has-fixed-layout">
<tbody>
<tr>
<td><strong>环节</strong></td>
<td><strong>人数</strong></td>
</tr>
<tr>
<td>浏览网站</td>
<td>9943</td>
</tr>
<tr>
<td>加入购物车</td>
<td>3320</td>
</tr>
<tr>
<td>生成订单</td>
<td>963</td>
</tr>
<tr>
<td>支付订单</td>
<td>646</td>
</tr>
<tr>
<td>完成交易</td>
<td>412</td>
</tr>
</tbody>
</table>
</figure>
<p><!-- /wp:table --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
</div><!-- .entry-content -->
</article><!-- #post-211 -->
<article id="post-199" class="post-199 post type-post status-publish format-standard hentry category-python">
<header class="entry-header">
<div class="entry-meta"><span class="screen-reader-text">发布于</span><a href="https://wpblog.x0y1.com/?p=199" rel="bookmark"><time class="entry-date published" datetime="2020-10-20T07:23:27+00:00">10月 20, 2020</time><time class="updated" datetime="2020-10-20T09:50:23+00:00">10月 20, 2020</time></a></div><!-- .entry-meta --><h3 class="entry-title"><a href="https://wpblog.x0y1.com/?p=199" rel="bookmark">2006年~2019年中国国内生产总值 (GDP) 统计</a></h3> </header><!-- .entry-header -->
<div class="entry-content">
<p><!-- wp:table {"hasFixedLayout":true,"className":"is-style-stripes"} --></p>
<figure class="wp-block-table is-style-stripes">
<table class="has-fixed-layout">
<tbody>
<tr>
<td><strong>年份</strong></td>
<td><strong>绝对额(亿元) </strong></td>
<td><strong>同比增长(%) </strong></td>
</tr>
<tr>
<td>2006年</td>
<td>219438.5</td>
<td>12.70%</td>
</tr>
<tr>
<td>2007年</td>
<td>270092.3</td>
<td>14.20%</td>
</tr>
<tr>
<td>2008年</td>
<td>319244.6</td>
<td>9.70%</td>
</tr>
<tr>
<td>2009年</td>
<td>348517.7</td>
<td>9.40%</td>
</tr>
<tr>
<td>2010年</td>
<td>412119.3</td>
<td>10.60%</td>
</tr>
<tr>
<td>2011年</td>
<td>487940.2</td>
<td>9.50%</td>
</tr>
<tr>
<td>2012年</td>
<td>538580</td>
<td>7.90%</td>
</tr>
<tr>
<td>2013年</td>
<td>592963.2</td>
<td>7.80%</td>
</tr>
<tr>
<td>2014年</td>
<td>643563.1</td>
<td>7.30%</td>
</tr>
<tr>
<td>2015年</td>
<td>688858.2</td>
<td>6.90%</td>
</tr>
<tr>
<td>2016年</td>
<td>746395.1</td>
<td>6.70%</td>
</tr>
<tr>
<td>2017年</td>
<td>832035.9</td>
<td>6.90%</td>
</tr>
<tr>
<td>2018年</td>
<td>919281.1</td>
<td>6.60%</td>
</tr>
<tr>
<td>2019年</td>
<td>990865.1</td>
<td>6.10%</td>
</tr>
</tbody>
</table>
</figure>
<p><!-- /wp:table --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
</div><!-- .entry-content -->
</article><!-- #post-199 -->
<article id="post-43" class="post-43 post type-post status-publish format-standard hentry category-python">
<header class="entry-header">
<div class="entry-meta"><span class="screen-reader-text">发布于</span><a href="https://wpblog.x0y1.com/?p=43" rel="bookmark"><time class="entry-date published updated" datetime="2019-09-17T16:37:31+00:00">9月 17, 2019</time></a></div><!-- .entry-meta --><h3 class="entry-title"><a href="https://wpblog.x0y1.com/?p=43" rel="bookmark">理解二进制难倒了很多人?别急,小贝马上教会你</a></h3> </header><!-- .entry-header -->
<div class="entry-content">
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote">
<p>提到进位制,大家应该都对十进制比较熟悉,因为生活中大都使用十进制的,我们从小学就开始学习十进制的四则运算。<em>既然人类对十进制这么熟悉,为什么计算机不和人类使用一样的进制呢?</em></p>
</blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:more --><br>
<a href="https://wpblog.x0y1.com/?p=43#more-43" class="more-link">继续阅读<span class="screen-reader-text">“理解二进制难倒了很多人?别急,小贝马上教会你”</span></a></p>
</div><!-- .entry-content -->
</article><!-- #post-43 -->
<article id="post-8" class="post-8 post type-post status-publish format-standard hentry category-python">
<header class="entry-header">
<div class="entry-meta"><span class="screen-reader-text">发布于</span><a href="https://wpblog.x0y1.com/?p=8" rel="bookmark"><time class="entry-date published" datetime="2019-09-17T10:40:04+00:00">9月 17, 2019</time><time class="updated" datetime="2020-06-03T03:24:42+00:00">6月 3, 2020</time></a></div><!-- .entry-meta --><h3 class="entry-title"><a href="https://wpblog.x0y1.com/?p=8" rel="bookmark">因为他,Python 成为当下最红编程语言</a></h3> </header><!-- .entry-header -->
<div class="entry-content">
<p><!-- wp:quote {"align":"center"} --></p>
<blockquote class="wp-block-quote has-text-align-center">
<p><strong>“我累了,需要很长时间的休息”</strong></p>
</blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>在 2018 年 7 月的一份名为“权力转移”的邮件列表帖子中,Guido van Rossum 写道:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>“我不想再为 PEP 劳神了,而且尽管我做着艰难的决定,却发现仍然有很多人不满意。”</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:more --><br>
<a href="https://wpblog.x0y1.com/?p=8#more-8" class="more-link">继续阅读<span class="screen-reader-text">“因为他,Python 成为当下最红编程语言”</span></a></p>
</div><!-- .entry-content -->
</article><!-- #post-8 -->
</main><!-- #main -->
</div><!-- #primary -->
<aside id="secondary" class="widget-area" role="complementary" aria-label="博客边栏">
<section id="search-2" class="widget widget_search">
<form role="search" method="get" class="search-form" action="https://wpblog.x0y1.com/">
<label for="search-form-1">
<span class="screen-reader-text">搜索:</span>
</label>
<input type="search" id="search-form-1" class="search-field" placeholder="搜索…" value="" name="s">
<button type="submit" class="search-submit"><svg class="icon icon-search" aria-hidden="true" role="img"> <use href="#icon-search" xlink:href="#icon-search"></use> </svg><span class="screen-reader-text">搜索</span></button>
</form>
</section> <section id="recent-posts-2" class="widget widget_recent_entries"> <h2 class="widget-title">近期文章</h2> <ul>
<li>
<a href="https://wpblog.x0y1.com/?p=211">编程实战 – 电商交易流程分析</a>
</li>
<li>
<a href="https://wpblog.x0y1.com/?p=199">2006年~2019年中国国内生产总值 (GDP) 统计</a>
</li>
<li>
<a href="https://wpblog.x0y1.com/?p=43">理解二进制难倒了很多人?别急,小贝马上教会你</a>
</li>
<li>
<a href="https://wpblog.x0y1.com/?p=34">Python 环境搭建指南</a>
</li>
<li>
<a href="https://wpblog.x0y1.com/?p=8">因为他,Python 成为当下最红编程语言</a>
</li>
</ul>
</section><section id="categories-2" class="widget widget_categories"><h2 class="widget-title">分类目录</h2> <ul>
<li class="cat-item cat-item-2"><a href="https://wpblog.x0y1.com/?cat=2">Python</a>
</li>
</ul>
</section><section id="meta-2" class="widget widget_meta"><h2 class="widget-title">功能</h2> <ul>
<li><a href="https://wpblog.x0y1.com/wp-login.php">登录</a></li>
<li><a href="https://wpblog.x0y1.com/?feed=rss2">文章<abbr title="Really Simple Syndication">RSS</abbr></a></li>
<li><a href="https://wpblog.x0y1.com/?feed=comments-rss2">评论<abbr title="Really Simple Syndication">RSS</abbr></a></li>
<li><a href="https://cn.wordpress.org/" title="基于WordPress,一个优美、先进的个人信息发布平台。">WordPress.org</a></li> </ul>
</section></aside><!-- #secondary -->
</div><!-- .wrap -->
</div><!-- #content -->
<footer id="colophon" class="site-footer" role="contentinfo">
<div class="wrap">
<div class="site-info">
<a href="https://cn.wordpress.org/" class="imprint">
自豪地采用WordPress </a>
</div><!-- .site-info -->
</div><!-- .wrap -->
</footer><!-- #colophon -->
</div><!-- .site-content-contain -->
</div><!-- #page -->
<script type="text/javascript">
/* <![CDATA[ */
var twentyseventeenScreenReaderText = {"quote":"<svg class=\"icon icon-quote-right\" aria-hidden=\"true\" role=\"img\"> <use href=\"#icon-quote-right\" xlink:href=\"#icon-quote-right\"><\/use> <\/svg>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://wpblog.x0y1.com/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js?ver=20161114"></script>
<script type="text/javascript" src="https://wpblog.x0y1.com/wp-content/themes/twentyseventeen/assets/js/global.js?ver=20190121"></script>
<script type="text/javascript" src="https://wpblog.x0y1.com/wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js?ver=2.1.2"></script>
<script type="text/javascript" src="https://wpblog.x0y1.com/wp-includes/js/wp-embed.min.js?ver=4.9.26"></script>
<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<symbol id="icon-behance" viewBox="0 0 37 32">
<path class="path1" d="M33 6.054h-9.125v2.214h9.125v-2.214zM28.5 13.661q-1.607 0-2.607 0.938t-1.107 2.545h7.286q-0.321-3.482-3.571-3.482zM28.786 24.107q1.125 0 2.179-0.571t1.357-1.554h3.946q-1.786 5.482-7.625 5.482-3.821 0-6.080-2.357t-2.259-6.196q0-3.714 2.33-6.17t6.009-2.455q2.464 0 4.295 1.214t2.732 3.196 0.902 4.429q0 0.304-0.036 0.839h-11.75q0 1.982 1.027 3.063t2.973 1.080zM4.946 23.214h5.286q3.661 0 3.661-2.982 0-3.214-3.554-3.214h-5.393v6.196zM4.946 13.625h5.018q1.393 0 2.205-0.652t0.813-2.027q0-2.571-3.393-2.571h-4.643v5.25zM0 4.536h10.607q1.554 0 2.768 0.25t2.259 0.848 1.607 1.723 0.563 2.75q0 3.232-3.071 4.696 2.036 0.571 3.071 2.054t1.036 3.643q0 1.339-0.438 2.438t-1.179 1.848-1.759 1.268-2.161 0.75-2.393 0.232h-10.911v-22.5z"></path>
</symbol>
<symbol id="icon-deviantart" viewBox="0 0 18 32">
<path class="path1" d="M18.286 5.411l-5.411 10.393 0.429 0.554h4.982v7.411h-9.054l-0.786 0.536-2.536 4.875-0.536 0.536h-5.375v-5.411l5.411-10.411-0.429-0.536h-4.982v-7.411h9.054l0.786-0.536 2.536-4.875 0.536-0.536h5.375v5.411z"></path>
</symbol>
<symbol id="icon-medium" viewBox="0 0 32 32">
<path class="path1" d="M10.661 7.518v20.946q0 0.446-0.223 0.759t-0.652 0.313q-0.304 0-0.589-0.143l-8.304-4.161q-0.375-0.179-0.634-0.598t-0.259-0.83v-20.357q0-0.357 0.179-0.607t0.518-0.25q0.25 0 0.786 0.268l9.125 4.571q0.054 0.054 0.054 0.089zM11.804 9.321l9.536 15.464-9.536-4.75v-10.714zM32 9.643v18.821q0 0.446-0.25 0.723t-0.679 0.277-0.839-0.232l-7.875-3.929zM31.946 7.5q0 0.054-4.58 7.491t-5.366 8.705l-6.964-11.321 5.786-9.411q0.304-0.5 0.929-0.5 0.25 0 0.464 0.107l9.661 4.821q0.071 0.036 0.071 0.107z"></path>
</symbol>
<symbol id="icon-slideshare" viewBox="0 0 32 32">
<path class="path1" d="M15.589 13.214q0 1.482-1.134 2.545t-2.723 1.063-2.723-1.063-1.134-2.545q0-1.5 1.134-2.554t2.723-1.054 2.723 1.054 1.134 2.554zM24.554 13.214q0 1.482-1.125 2.545t-2.732 1.063q-1.589 0-2.723-1.063t-1.134-2.545q0-1.5 1.134-2.554t2.723-1.054q1.607 0 2.732 1.054t1.125 2.554zM28.571 16.429v-11.911q0-1.554-0.571-2.205t-1.982-0.652h-19.857q-1.482 0-2.009 0.607t-0.527 2.25v12.018q0.768 0.411 1.58 0.714t1.446 0.5 1.446 0.33 1.268 0.196 1.25 0.071 1.045 0.009 1.009-0.036 0.795-0.036q1.214-0.018 1.696 0.482 0.107 0.107 0.179 0.161 0.464 0.446 1.089 0.911 0.125-1.625 2.107-1.554 0.089 0 0.652 0.027t0.768 0.036 0.813 0.018 0.946-0.018 0.973-0.080 1.089-0.152 1.107-0.241 1.196-0.348 1.205-0.482 1.286-0.616zM31.482 16.339q-2.161 2.661-6.643 4.5 1.5 5.089-0.411 8.304-1.179 2.018-3.268 2.643-1.857 0.571-3.25-0.268-1.536-0.911-1.464-2.929l-0.018-5.821v-0.018q-0.143-0.036-0.438-0.107t-0.42-0.089l-0.018 6.036q0.071 2.036-1.482 2.929-1.411 0.839-3.268 0.268-2.089-0.643-3.25-2.679-1.875-3.214-0.393-8.268-4.482-1.839-6.643-4.5-0.446-0.661-0.071-1.125t1.071 0.018q0.054 0.036 0.196 0.125t0.196 0.143v-12.393q0-1.286 0.839-2.196t2.036-0.911h22.446q1.196 0 2.036 0.911t0.839 2.196v12.393l0.375-0.268q0.696-0.482 1.071-0.018t-0.071 1.125z"></path>
</symbol>
<symbol id="icon-snapchat-ghost" viewBox="0 0 30 32">
<path class="path1" d="M15.143 2.286q2.393-0.018 4.295 1.223t2.92 3.438q0.482 1.036 0.482 3.196 0 0.839-0.161 3.411 0.25 0.125 0.5 0.125 0.321 0 0.911-0.241t0.911-0.241q0.518 0 1 0.321t0.482 0.821q0 0.571-0.563 0.964t-1.232 0.563-1.232 0.518-0.563 0.848q0 0.268 0.214 0.768 0.661 1.464 1.83 2.679t2.58 1.804q0.5 0.214 1.429 0.411 0.5 0.107 0.5 0.625 0 1.25-3.911 1.839-0.125 0.196-0.196 0.696t-0.25 0.83-0.589 0.33q-0.357 0-1.107-0.116t-1.143-0.116q-0.661 0-1.107 0.089-0.571 0.089-1.125 0.402t-1.036 0.679-1.036 0.723-1.357 0.598-1.768 0.241q-0.929 0-1.723-0.241t-1.339-0.598-1.027-0.723-1.036-0.679-1.107-0.402q-0.464-0.089-1.125-0.089-0.429 0-1.17 0.134t-1.045 0.134q-0.446 0-0.625-0.33t-0.25-0.848-0.196-0.714q-3.911-0.589-3.911-1.839 0-0.518 0.5-0.625 0.929-0.196 1.429-0.411 1.393-0.571 2.58-1.804t1.83-2.679q0.214-0.5 0.214-0.768 0-0.5-0.563-0.848t-1.241-0.527-1.241-0.563-0.563-0.938q0-0.482 0.464-0.813t0.982-0.33q0.268 0 0.857 0.232t0.946 0.232q0.321 0 0.571-0.125-0.161-2.536-0.161-3.393 0-2.179 0.482-3.214 1.143-2.446 3.071-3.536t4.714-1.125z"></path>
</symbol>
<symbol id="icon-yelp" viewBox="0 0 27 32">
<path class="path1" d="M13.804 23.554v2.268q-0.018 5.214-0.107 5.446-0.214 0.571-0.911 0.714-0.964 0.161-3.241-0.679t-2.902-1.589q-0.232-0.268-0.304-0.643-0.018-0.214 0.071-0.464 0.071-0.179 0.607-0.839t3.232-3.857q0.018 0 1.071-1.25 0.268-0.339 0.705-0.438t0.884 0.063q0.429 0.179 0.67 0.518t0.223 0.75zM11.143 19.071q-0.054 0.982-0.929 1.25l-2.143 0.696q-4.911 1.571-5.214 1.571-0.625-0.036-0.964-0.643-0.214-0.446-0.304-1.339-0.143-1.357 0.018-2.973t0.536-2.223 1-0.571q0.232 0 3.607 1.375 1.25 0.518 2.054 0.839l1.5 0.607q0.411 0.161 0.634 0.545t0.205 0.866zM25.893 24.375q-0.125 0.964-1.634 2.875t-2.42 2.268q-0.661 0.25-1.125-0.125-0.25-0.179-3.286-5.125l-0.839-1.375q-0.25-0.375-0.205-0.821t0.348-0.821q0.625-0.768 1.482-0.464 0.018 0.018 2.125 0.714 3.625 1.179 4.321 1.42t0.839 0.366q0.5 0.393 0.393 1.089zM13.893 13.089q0.089 1.821-0.964 2.179-1.036 0.304-2.036-1.268l-6.75-10.679q-0.143-0.625 0.339-1.107 0.732-0.768 3.705-1.598t4.009-0.563q0.714 0.179 0.875 0.804 0.054 0.321 0.393 5.455t0.429 6.777zM25.714 15.018q0.054 0.696-0.464 1.054-0.268 0.179-5.875 1.536-1.196 0.268-1.625 0.411l0.018-0.036q-0.411 0.107-0.821-0.071t-0.661-0.571q-0.536-0.839 0-1.554 0.018-0.018 1.339-1.821 2.232-3.054 2.679-3.643t0.607-0.696q0.5-0.339 1.161-0.036 0.857 0.411 2.196 2.384t1.446 2.991v0.054z"></path>
</symbol>
<symbol id="icon-vine" viewBox="0 0 27 32">
<path class="path1" d="M26.732 14.768v3.536q-1.804 0.411-3.536 0.411-1.161 2.429-2.955 4.839t-3.241 3.848-2.286 1.902q-1.429 0.804-2.893-0.054-0.5-0.304-1.080-0.777t-1.518-1.491-1.83-2.295-1.92-3.286-1.884-4.357-1.634-5.616-1.259-6.964h5.054q0.464 3.893 1.25 7.116t1.866 5.661 2.17 4.205 2.5 3.482q3.018-3.018 5.125-7.25-2.536-1.286-3.982-3.929t-1.446-5.946q0-3.429 1.857-5.616t5.071-2.188q3.179 0 4.875 1.884t1.696 5.313q0 2.839-1.036 5.107-0.125 0.018-0.348 0.054t-0.821 0.036-1.125-0.107-1.107-0.455-0.902-0.92q0.554-1.839 0.554-3.286 0-1.554-0.518-2.357t-1.411-0.804q-0.946 0-1.518 0.884t-0.571 2.509q0 3.321 1.875 5.241t4.768 1.92q1.107 0 2.161-0.25z"></path>
</symbol>
<symbol id="icon-vk" viewBox="0 0 35 32">
<path class="path1" d="M34.232 9.286q0.411 1.143-2.679 5.25-0.429 0.571-1.161 1.518-1.393 1.786-1.607 2.339-0.304 0.732 0.25 1.446 0.304 0.375 1.446 1.464h0.018l0.071 0.071q2.518 2.339 3.411 3.946 0.054 0.089 0.116 0.223t0.125 0.473-0.009 0.607-0.446 0.491-1.054 0.223l-4.571 0.071q-0.429 0.089-1-0.089t-0.929-0.393l-0.357-0.214q-0.536-0.375-1.25-1.143t-1.223-1.384-1.089-1.036-1.009-0.277q-0.054 0.018-0.143 0.063t-0.304 0.259-0.384 0.527-0.304 0.929-0.116 1.384q0 0.268-0.063 0.491t-0.134 0.33l-0.071 0.089q-0.321 0.339-0.946 0.393h-2.054q-1.268 0.071-2.607-0.295t-2.348-0.946-1.839-1.179-1.259-1.027l-0.446-0.429q-0.179-0.179-0.491-0.536t-1.277-1.625-1.893-2.696-2.188-3.768-2.33-4.857q-0.107-0.286-0.107-0.482t0.054-0.286l0.071-0.107q0.268-0.339 1.018-0.339l4.893-0.036q0.214 0.036 0.411 0.116t0.286 0.152l0.089 0.054q0.286 0.196 0.429 0.571 0.357 0.893 0.821 1.848t0.732 1.455l0.286 0.518q0.518 1.071 1 1.857t0.866 1.223 0.741 0.688 0.607 0.25 0.482-0.089q0.036-0.018 0.089-0.089t0.214-0.393 0.241-0.839 0.17-1.446 0-2.232q-0.036-0.714-0.161-1.304t-0.25-0.821l-0.107-0.214q-0.446-0.607-1.518-0.768-0.232-0.036 0.089-0.429 0.304-0.339 0.679-0.536 0.946-0.464 4.268-0.429 1.464 0.018 2.411 0.232 0.357 0.089 0.598 0.241t0.366 0.429 0.188 0.571 0.063 0.813-0.018 0.982-0.045 1.259-0.027 1.473q0 0.196-0.018 0.75t-0.009 0.857 0.063 0.723 0.205 0.696 0.402 0.438q0.143 0.036 0.304 0.071t0.464-0.196 0.679-0.616 0.929-1.196 1.214-1.92q1.071-1.857 1.911-4.018 0.071-0.179 0.179-0.313t0.196-0.188l0.071-0.054 0.089-0.045t0.232-0.054 0.357-0.009l5.143-0.036q0.696-0.089 1.143 0.045t0.554 0.295z"></path>
</symbol>
<symbol id="icon-search" viewBox="0 0 30 32">
<path class="path1" d="M20.571 14.857q0-3.304-2.348-5.652t-5.652-2.348-5.652 2.348-2.348 5.652 2.348 5.652 5.652 2.348 5.652-2.348 2.348-5.652zM29.714 29.714q0 0.929-0.679 1.607t-1.607 0.679q-0.964 0-1.607-0.679l-6.125-6.107q-3.196 2.214-7.125 2.214-2.554 0-4.884-0.991t-4.018-2.679-2.679-4.018-0.991-4.884 0.991-4.884 2.679-4.018 4.018-2.679 4.884-0.991 4.884 0.991 4.018 2.679 2.679 4.018 0.991 4.884q0 3.929-2.214 7.125l6.125 6.125q0.661 0.661 0.661 1.607z"></path>
</symbol>
<symbol id="icon-envelope-o" viewBox="0 0 32 32">
<path class="path1" d="M29.714 26.857v-13.714q-0.571 0.643-1.232 1.179-4.786 3.679-7.607 6.036-0.911 0.768-1.482 1.196t-1.545 0.866-1.83 0.438h-0.036q-0.857 0-1.83-0.438t-1.545-0.866-1.482-1.196q-2.821-2.357-7.607-6.036-0.661-0.536-1.232-1.179v13.714q0 0.232 0.17 0.402t0.402 0.17h26.286q0.232 0 0.402-0.17t0.17-0.402zM29.714 8.089v-0.438t-0.009-0.232-0.054-0.223-0.098-0.161-0.161-0.134-0.25-0.045h-26.286q-0.232 0-0.402 0.17t-0.17 0.402q0 3 2.625 5.071 3.446 2.714 7.161 5.661 0.107 0.089 0.625 0.527t0.821 0.67 0.795 0.563 0.902 0.491 0.768 0.161h0.036q0.357 0 0.768-0.161t0.902-0.491 0.795-0.563 0.821-0.67 0.625-0.527q3.714-2.946 7.161-5.661 0.964-0.768 1.795-2.063t0.83-2.348zM32 7.429v19.429q0 1.179-0.839 2.018t-2.018 0.839h-26.286q-1.179 0-2.018-0.839t-0.839-2.018v-19.429q0-1.179 0.839-2.018t2.018-0.839h26.286q1.179 0 2.018 0.839t0.839 2.018z"></path>
</symbol>
<symbol id="icon-close" viewBox="0 0 25 32">
<path class="path1" d="M23.179 23.607q0 0.714-0.5 1.214l-2.429 2.429q-0.5 0.5-1.214 0.5t-1.214-0.5l-5.25-5.25-5.25 5.25q-0.5 0.5-1.214 0.5t-1.214-0.5l-2.429-2.429q-0.5-0.5-0.5-1.214t0.5-1.214l5.25-5.25-5.25-5.25q-0.5-0.5-0.5-1.214t0.5-1.214l2.429-2.429q0.5-0.5 1.214-0.5t1.214 0.5l5.25 5.25 5.25-5.25q0.5-0.5 1.214-0.5t1.214 0.5l2.429 2.429q0.5 0.5 0.5 1.214t-0.5 1.214l-5.25 5.25 5.25 5.25q0.5 0.5 0.5 1.214z"></path>
</symbol>
<symbol id="icon-angle-down" viewBox="0 0 21 32">
<path class="path1" d="M19.196 13.143q0 0.232-0.179 0.411l-8.321 8.321q-0.179 0.179-0.411 0.179t-0.411-0.179l-8.321-8.321q-0.179-0.179-0.179-0.411t0.179-0.411l0.893-0.893q0.179-0.179 0.411-0.179t0.411 0.179l7.018 7.018 7.018-7.018q0.179-0.179 0.411-0.179t0.411 0.179l0.893 0.893q0.179 0.179 0.179 0.411z"></path>
</symbol>
<symbol id="icon-folder-open" viewBox="0 0 34 32">
<path class="path1" d="M33.554 17q0 0.554-0.554 1.179l-6 7.071q-0.768 0.911-2.152 1.545t-2.563 0.634h-19.429q-0.607 0-1.080-0.232t-0.473-0.768q0-0.554 0.554-1.179l6-7.071q0.768-0.911 2.152-1.545t2.563-0.634h19.429q0.607 0 1.080 0.232t0.473 0.768zM27.429 10.857v2.857h-14.857q-1.679 0-3.518 0.848t-2.929 2.134l-6.107 7.179q0-0.071-0.009-0.223t-0.009-0.223v-17.143q0-1.643 1.179-2.821t2.821-1.179h5.714q1.643 0 2.821 1.179t1.179 2.821v0.571h9.714q1.643 0 2.821 1.179t1.179 2.821z"></path>
</symbol>
<symbol id="icon-twitter" viewBox="0 0 30 32">
<path class="path1" d="M28.929 7.286q-1.196 1.75-2.893 2.982 0.018 0.25 0.018 0.75 0 2.321-0.679 4.634t-2.063 4.437-3.295 3.759-4.607 2.607-5.768 0.973q-4.839 0-8.857-2.589 0.625 0.071 1.393 0.071 4.018 0 7.161-2.464-1.875-0.036-3.357-1.152t-2.036-2.848q0.589 0.089 1.089 0.089 0.768 0 1.518-0.196-2-0.411-3.313-1.991t-1.313-3.67v-0.071q1.214 0.679 2.607 0.732-1.179-0.786-1.875-2.054t-0.696-2.75q0-1.571 0.786-2.911 2.161 2.661 5.259 4.259t6.634 1.777q-0.143-0.679-0.143-1.321 0-2.393 1.688-4.080t4.080-1.688q2.5 0 4.214 1.821 1.946-0.375 3.661-1.393-0.661 2.054-2.536 3.179 1.661-0.179 3.321-0.893z"></path>
</symbol>
<symbol id="icon-facebook" viewBox="0 0 19 32">
<path class="path1" d="M17.125 0.214v4.714h-2.804q-1.536 0-2.071 0.643t-0.536 1.929v3.375h5.232l-0.696 5.286h-4.536v13.554h-5.464v-13.554h-4.554v-5.286h4.554v-3.893q0-3.321 1.857-5.152t4.946-1.83q2.625 0 4.071 0.214z"></path>
</symbol>
<symbol id="icon-github" viewBox="0 0 27 32">
<path class="path1" d="M13.714 2.286q3.732 0 6.884 1.839t4.991 4.991 1.839 6.884q0 4.482-2.616 8.063t-6.759 4.955q-0.482 0.089-0.714-0.125t-0.232-0.536q0-0.054 0.009-1.366t0.009-2.402q0-1.732-0.929-2.536 1.018-0.107 1.83-0.321t1.679-0.696 1.446-1.188 0.946-1.875 0.366-2.688q0-2.125-1.411-3.679 0.661-1.625-0.143-3.643-0.5-0.161-1.446 0.196t-1.643 0.786l-0.679 0.429q-1.661-0.464-3.429-0.464t-3.429 0.464q-0.286-0.196-0.759-0.482t-1.491-0.688-1.518-0.241q-0.804 2.018-0.143 3.643-1.411 1.554-1.411 3.679 0 1.518 0.366 2.679t0.938 1.875 1.438 1.196 1.679 0.696 1.83 0.321q-0.696 0.643-0.875 1.839-0.375 0.179-0.804 0.268t-1.018 0.089-1.17-0.384-0.991-1.116q-0.339-0.571-0.866-0.929t-0.884-0.429l-0.357-0.054q-0.375 0-0.518 0.080t-0.089 0.205 0.161 0.25 0.232 0.214l0.125 0.089q0.393 0.179 0.777 0.679t0.563 0.911l0.179 0.411q0.232 0.679 0.786 1.098t1.196 0.536 1.241 0.125 0.991-0.063l0.411-0.071q0 0.679 0.009 1.58t0.009 0.973q0 0.321-0.232 0.536t-0.714 0.125q-4.143-1.375-6.759-4.955t-2.616-8.063q0-3.732 1.839-6.884t4.991-4.991 6.884-1.839zM5.196 21.982q0.054-0.125-0.125-0.214-0.179-0.054-0.232 0.036-0.054 0.125 0.125 0.214 0.161 0.107 0.232-0.036zM5.75 22.589q0.125-0.089-0.036-0.286-0.179-0.161-0.286-0.054-0.125 0.089 0.036 0.286 0.179 0.179 0.286 0.054zM6.286 23.393q0.161-0.125 0-0.339-0.143-0.232-0.304-0.107-0.161 0.089 0 0.321t0.304 0.125zM7.036 24.143q0.143-0.143-0.071-0.339-0.214-0.214-0.357-0.054-0.161 0.143 0.071 0.339 0.214 0.214 0.357 0.054zM8.054 24.589q0.054-0.196-0.232-0.286-0.268-0.071-0.339 0.125t0.232 0.268q0.268 0.107 0.339-0.107zM9.179 24.679q0-0.232-0.304-0.196-0.286 0-0.286 0.196 0 0.232 0.304 0.196 0.286 0 0.286-0.196zM10.214 24.5q-0.036-0.196-0.321-0.161-0.286 0.054-0.25 0.268t0.321 0.143 0.25-0.25z"></path>
</symbol>
<symbol id="icon-bars" viewBox="0 0 27 32">
<path class="path1" d="M27.429 24v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804zM27.429 14.857v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804zM27.429 5.714v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804z"></path>
</symbol>
<symbol id="icon-google-plus" viewBox="0 0 41 32">
<path class="path1" d="M25.661 16.304q0 3.714-1.554 6.616t-4.429 4.536-6.589 1.634q-2.661 0-5.089-1.036t-4.179-2.786-2.786-4.179-1.036-5.089 1.036-5.089 2.786-4.179 4.179-2.786 5.089-1.036q5.107 0 8.768 3.429l-3.554 3.411q-2.089-2.018-5.214-2.018-2.196 0-4.063 1.107t-2.955 3.009-1.089 4.152 1.089 4.152 2.955 3.009 4.063 1.107q1.482 0 2.723-0.411t2.045-1.027 1.402-1.402 0.875-1.482 0.384-1.321h-7.429v-4.5h12.357q0.214 1.125 0.214 2.179zM41.143 14.125v3.75h-3.732v3.732h-3.75v-3.732h-3.732v-3.75h3.732v-3.732h3.75v3.732h3.732z"></path>
</symbol>
<symbol id="icon-linkedin" viewBox="0 0 27 32">
<path class="path1" d="M6.232 11.161v17.696h-5.893v-17.696h5.893zM6.607 5.696q0.018 1.304-0.902 2.179t-2.42 0.875h-0.036q-1.464 0-2.357-0.875t-0.893-2.179q0-1.321 0.92-2.188t2.402-0.866 2.375 0.866 0.911 2.188zM27.429 18.714v10.143h-5.875v-9.464q0-1.875-0.723-2.938t-2.259-1.063q-1.125 0-1.884 0.616t-1.134 1.527q-0.196 0.536-0.196 1.446v9.875h-5.875q0.036-7.125 0.036-11.554t-0.018-5.286l-0.018-0.857h5.875v2.571h-0.036q0.357-0.571 0.732-1t1.009-0.929 1.554-0.777 2.045-0.277q3.054 0 4.911 2.027t1.857 5.938z"></path>
</symbol>
<symbol id="icon-quote-right" viewBox="0 0 30 32">
<path class="path1" d="M13.714 5.714v12.571q0 1.857-0.723 3.545t-1.955 2.92-2.92 1.955-3.545 0.723h-1.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h1.143q1.893 0 3.232-1.339t1.339-3.232v-0.571q0-0.714-0.5-1.214t-1.214-0.5h-4q-1.429 0-2.429-1t-1-2.429v-6.857q0-1.429 1-2.429t2.429-1h6.857q1.429 0 2.429 1t1 2.429zM29.714 5.714v12.571q0 1.857-0.723 3.545t-1.955 2.92-2.92 1.955-3.545 0.723h-1.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h1.143q1.893 0 3.232-1.339t1.339-3.232v-0.571q0-0.714-0.5-1.214t-1.214-0.5h-4q-1.429 0-2.429-1t-1-2.429v-6.857q0-1.429 1-2.429t2.429-1h6.857q1.429 0 2.429 1t1 2.429z"></path>
</symbol>
<symbol id="icon-mail-reply" viewBox="0 0 32 32">
<path class="path1" d="M32 20q0 2.964-2.268 8.054-0.054 0.125-0.188 0.429t-0.241 0.536-0.232 0.393q-0.214 0.304-0.5 0.304-0.268 0-0.42-0.179t-0.152-0.446q0-0.161 0.045-0.473t0.045-0.42q0.089-1.214 0.089-2.196 0-1.804-0.313-3.232t-0.866-2.473-1.429-1.804-1.884-1.241-2.375-0.759-2.75-0.384-3.134-0.107h-4v4.571q0 0.464-0.339 0.804t-0.804 0.339-0.804-0.339l-9.143-9.143q-0.339-0.339-0.339-0.804t0.339-0.804l9.143-9.143q0.339-0.339 0.804-0.339t0.804 0.339 0.339 0.804v4.571h4q12.732 0 15.625 7.196 0.946 2.393 0.946 5.946z"></path>
</symbol>
<symbol id="icon-youtube" viewBox="0 0 27 32">
<path class="path1" d="M17.339 22.214v3.768q0 1.196-0.696 1.196-0.411 0-0.804-0.393v-5.375q0.393-0.393 0.804-0.393 0.696 0 0.696 1.196zM23.375 22.232v0.821h-1.607v-0.821q0-1.214 0.804-1.214t0.804 1.214zM6.125 18.339h1.911v-1.679h-5.571v1.679h1.875v10.161h1.786v-10.161zM11.268 28.5h1.589v-8.821h-1.589v6.75q-0.536 0.75-1.018 0.75-0.321 0-0.375-0.375-0.018-0.054-0.018-0.625v-6.5h-1.589v6.982q0 0.875 0.143 1.304 0.214 0.661 1.036 0.661 0.857 0 1.821-1.089v0.964zM18.929 25.857v-3.518q0-1.304-0.161-1.768-0.304-1-1.268-1-0.893 0-1.661 0.964v-3.875h-1.589v11.839h1.589v-0.857q0.804 0.982 1.661 0.982 0.964 0 1.268-0.982 0.161-0.482 0.161-1.786zM24.964 25.679v-0.232h-1.625q0 0.911-0.036 1.089-0.125 0.643-0.714 0.643-0.821 0-0.821-1.232v-1.554h3.196v-1.839q0-1.411-0.482-2.071-0.696-0.911-1.893-0.911-1.214 0-1.911 0.911-0.5 0.661-0.5 2.071v3.089q0 1.411 0.518 2.071 0.696 0.911 1.929 0.911 1.286 0 1.929-0.946 0.321-0.482 0.375-0.964 0.036-0.161 0.036-1.036zM14.107 9.375v-3.75q0-1.232-0.768-1.232t-0.768 1.232v3.75q0 1.25 0.768 1.25t0.768-1.25zM26.946 22.786q0 4.179-0.464 6.25-0.25 1.054-1.036 1.768t-1.821 0.821q-3.286 0.375-9.911 0.375t-9.911-0.375q-1.036-0.107-1.83-0.821t-1.027-1.768q-0.464-2-0.464-6.25 0-4.179 0.464-6.25 0.25-1.054 1.036-1.768t1.839-0.839q3.268-0.357 9.893-0.357t9.911 0.357q1.036 0.125 1.83 0.839t1.027 1.768q0.464 2 0.464 6.25zM9.125 0h1.821l-2.161 7.125v4.839h-1.786v-4.839q-0.25-1.321-1.089-3.786-0.661-1.839-1.161-3.339h1.893l1.268 4.696zM15.732 5.946v3.125q0 1.446-0.5 2.107-0.661 0.911-1.893 0.911-1.196 0-1.875-0.911-0.5-0.679-0.5-2.107v-3.125q0-1.429 0.5-2.089 0.679-0.911 1.875-0.911 1.232 0 1.893 0.911 0.5 0.661 0.5 2.089zM21.714 3.054v8.911h-1.625v-0.982q-0.946 1.107-1.839 1.107-0.821 0-1.054-0.661-0.143-0.429-0.143-1.339v-7.036h1.625v6.554q0 0.589 0.018 0.625 0.054 0.393 0.375 0.393 0.482 0 1.018-0.768v-6.804h1.625z"></path>
</symbol>
<symbol id="icon-dropbox" viewBox="0 0 32 32">
<path class="path1" d="M7.179 12.625l8.821 5.446-6.107 5.089-8.75-5.696zM24.786 22.536v1.929l-8.75 5.232v0.018l-0.018-0.018-0.018 0.018v-0.018l-8.732-5.232v-1.929l2.625 1.714 6.107-5.071v-0.036l0.018 0.018 0.018-0.018v0.036l6.125 5.071zM9.893 2.107l6.107 5.089-8.821 5.429-6.036-4.821zM24.821 12.625l6.036 4.839-8.732 5.696-6.125-5.089zM22.125 2.107l8.732 5.696-6.036 4.821-8.821-5.429z"></path>
</symbol>
<symbol id="icon-instagram" viewBox="0 0 27 32">
<path class="path1" d="M18.286 16q0-1.893-1.339-3.232t-3.232-1.339-3.232 1.339-1.339 3.232 1.339 3.232 3.232 1.339 3.232-1.339 1.339-3.232zM20.75 16q0 2.929-2.054 4.982t-4.982 2.054-4.982-2.054-2.054-4.982 2.054-4.982 4.982-2.054 4.982 2.054 2.054 4.982zM22.679 8.679q0 0.679-0.482 1.161t-1.161 0.482-1.161-0.482-0.482-1.161 0.482-1.161 1.161-0.482 1.161 0.482 0.482 1.161zM13.714 4.75q-0.125 0-1.366-0.009t-1.884 0-1.723 0.054-1.839 0.179-1.277 0.33q-0.893 0.357-1.571 1.036t-1.036 1.571q-0.196 0.518-0.33 1.277t-0.179 1.839-0.054 1.723 0 1.884 0.009 1.366-0.009 1.366 0 1.884 0.054 1.723 0.179 1.839 0.33 1.277q0.357 0.893 1.036 1.571t1.571 1.036q0.518 0.196 1.277 0.33t1.839 0.179 1.723 0.054 1.884 0 1.366-0.009 1.366 0.009 1.884 0 1.723-0.054 1.839-0.179 1.277-0.33q0.893-0.357 1.571-1.036t1.036-1.571q0.196-0.518 0.33-1.277t0.179-1.839 0.054-1.723 0-1.884-0.009-1.366 0.009-1.366 0-1.884-0.054-1.723-0.179-1.839-0.33-1.277q-0.357-0.893-1.036-1.571t-1.571-1.036q-0.518-0.196-1.277-0.33t-1.839-0.179-1.723-0.054-1.884 0-1.366 0.009zM27.429 16q0 4.089-0.089 5.661-0.179 3.714-2.214 5.75t-5.75 2.214q-1.571 0.089-5.661 0.089t-5.661-0.089q-3.714-0.179-5.75-2.214t-2.214-5.75q-0.089-1.571-0.089-5.661t0.089-5.661q0.179-3.714 2.214-5.75t5.75-2.214q1.571-0.089 5.661-0.089t5.661 0.089q3.714 0.179 5.75 2.214t2.214 5.75q0.089 1.571 0.089 5.661z"></path>
</symbol>
<symbol id="icon-flickr" viewBox="0 0 27 32">
<path class="path1" d="M22.286 2.286q2.125 0 3.634 1.509t1.509 3.634v17.143q0 2.125-1.509 3.634t-3.634 1.509h-17.143q-2.125 0-3.634-1.509t-1.509-3.634v-17.143q0-2.125 1.509-3.634t3.634-1.509h17.143zM12.464 16q0-1.571-1.107-2.679t-2.679-1.107-2.679 1.107-1.107 2.679 1.107 2.679 2.679 1.107 2.679-1.107 1.107-2.679zM22.536 16q0-1.571-1.107-2.679t-2.679-1.107-2.679 1.107-1.107 2.679 1.107 2.679 2.679 1.107 2.679-1.107 1.107-2.679z"></path>
</symbol>
<symbol id="icon-tumblr" viewBox="0 0 19 32">
<path class="path1" d="M16.857 23.732l1.429 4.232q-0.411 0.625-1.982 1.179t-3.161 0.571q-1.857 0.036-3.402-0.464t-2.545-1.321-1.696-1.893-0.991-2.143-0.295-2.107v-9.714h-3v-3.839q1.286-0.464 2.304-1.241t1.625-1.607 1.036-1.821 0.607-1.768 0.268-1.58q0.018-0.089 0.080-0.152t0.134-0.063h4.357v7.571h5.946v4.5h-5.964v9.25q0 0.536 0.116 1t0.402 0.938 0.884 0.741 1.455 0.25q1.393-0.036 2.393-0.518z"></path>
</symbol>
<symbol id="icon-dockerhub" viewBox="0 0 24 28">
<path class="path1" d="M1.597 10.257h2.911v2.83H1.597v-2.83zm3.573 0h2.91v2.83H5.17v-2.83zm0-3.627h2.91v2.829H5.17V6.63zm3.57 3.627h2.912v2.83H8.74v-2.83zm0-3.627h2.912v2.829H8.74V6.63zm3.573 3.627h2.911v2.83h-2.911v-2.83zm0-3.627h2.911v2.829h-2.911V6.63zm3.572 3.627h2.911v2.83h-2.911v-2.83zM12.313 3h2.911v2.83h-2.911V3zm-6.65 14.173c-.449 0-.812.354-.812.788 0 .435.364.788.812.788.447 0 .811-.353.811-.788 0-.434-.363-.788-.811-.788"></path>
<path class="path2" d="M28.172 11.721c-.978-.549-2.278-.624-3.388-.306-.136-1.146-.91-2.149-1.83-2.869l-.366-.286-.307.345c-.618.692-.8 1.845-.718 2.73.063.651.273 1.312.685 1.834-.313.183-.668.328-.985.434-.646.212-1.347.33-2.028.33H.083l-.042.429c-.137 1.432.065 2.866.674 4.173l.262.519.03.048c1.8 2.973 4.963 4.225 8.41 4.225 6.672 0 12.174-2.896 14.702-9.015 1.689.085 3.417-.4 4.243-1.968l.211-.4-.401-.223zM5.664 19.458c-.85 0-1.542-.671-1.542-1.497 0-.825.691-1.498 1.541-1.498.849 0 1.54.672 1.54 1.497s-.69 1.498-1.539 1.498z"></path>
</symbol>
<symbol id="icon-dribbble" viewBox="0 0 27 32">
<path class="path1" d="M18.286 26.786q-0.75-4.304-2.5-8.893h-0.036l-0.036 0.018q-0.286 0.107-0.768 0.295t-1.804 0.875-2.446 1.464-2.339 2.045-1.839 2.643l-0.268-0.196q3.286 2.679 7.464 2.679 2.357 0 4.571-0.929zM14.982 15.946q-0.375-0.875-0.946-1.982-5.554 1.661-12.018 1.661-0.018 0.125-0.018 0.375 0 2.214 0.786 4.223t2.214 3.598q0.893-1.589 2.205-2.973t2.545-2.223 2.33-1.446 1.777-0.857l0.661-0.232q0.071-0.018 0.232-0.063t0.232-0.080zM13.071 12.161q-2.143-3.804-4.357-6.75-2.464 1.161-4.179 3.321t-2.286 4.857q5.393 0 10.821-1.429zM25.286 17.857q-3.75-1.071-7.304-0.518 1.554 4.268 2.286 8.375 1.982-1.339 3.304-3.384t1.714-4.473zM10.911 4.625q-0.018 0-0.036 0.018 0.018-0.018 0.036-0.018zM21.446 7.214q-3.304-2.929-7.732-2.929-1.357 0-2.768 0.339 2.339 3.036 4.393 6.821 1.232-0.464 2.321-1.080t1.723-1.098 1.17-1.018 0.67-0.723zM25.429 15.875q-0.054-4.143-2.661-7.321l-0.018 0.018q-0.161 0.214-0.339 0.438t-0.777 0.795-1.268 1.080-1.786 1.161-2.348 1.152q0.446 0.946 0.786 1.696 0.036 0.107 0.116 0.313t0.134 0.295q0.643-0.089 1.33-0.125t1.313-0.036 1.232 0.027 1.143 0.071 1.009 0.098 0.857 0.116 0.652 0.107 0.446 0.080zM27.429 16q0 3.732-1.839 6.884t-4.991 4.991-6.884 1.839-6.884-1.839-4.991-4.991-1.839-6.884 1.839-6.884 4.991-4.991 6.884-1.839 6.884 1.839 4.991 4.991 1.839 6.884z"></path>
</symbol>
<symbol id="icon-skype" viewBox="0 0 27 32">
<path class="path1" d="M20.946 18.982q0-0.893-0.348-1.634t-0.866-1.223-1.304-0.875-1.473-0.607-1.563-0.411l-1.857-0.429q-0.536-0.125-0.786-0.188t-0.625-0.205-0.536-0.286-0.295-0.375-0.134-0.536q0-1.375 2.571-1.375 0.768 0 1.375 0.214t0.964 0.509 0.679 0.598 0.714 0.518 0.857 0.214q0.839 0 1.348-0.571t0.509-1.375q0-0.982-1-1.777t-2.536-1.205-3.25-0.411q-1.214 0-2.357 0.277t-2.134 0.839-1.589 1.554-0.598 2.295q0 1.089 0.339 1.902t1 1.348 1.429 0.866 1.839 0.58l2.607 0.643q1.607 0.393 2 0.643 0.571 0.357 0.571 1.071 0 0.696-0.714 1.152t-1.875 0.455q-0.911 0-1.634-0.286t-1.161-0.688-0.813-0.804-0.821-0.688-0.964-0.286q-0.893 0-1.348 0.536t-0.455 1.339q0 1.643 2.179 2.813t5.196 1.17q1.304 0 2.5-0.33t2.188-0.955 1.58-1.67 0.589-2.348zM27.429 22.857q0 2.839-2.009 4.848t-4.848 2.009q-2.321 0-4.179-1.429-1.375 0.286-2.679 0.286-2.554 0-4.884-0.991t-4.018-2.679-2.679-4.018-0.991-4.884q0-1.304 0.286-2.679-1.429-1.857-1.429-4.179 0-2.839 2.009-4.848t4.848-2.009q2.321 0 4.179 1.429 1.375-0.286 2.679-0.286 2.554 0 4.884 0.991t4.018 2.679 2.679 4.018 0.991 4.884q0 1.304-0.286 2.679 1.429 1.857 1.429 4.179z"></path>
</symbol>
<symbol id="icon-foursquare" viewBox="0 0 23 32">
<path class="path1" d="M17.857 7.75l0.661-3.464q0.089-0.411-0.161-0.714t-0.625-0.304h-12.714q-0.411 0-0.688 0.304t-0.277 0.661v19.661q0 0.125 0.107 0.018l5.196-6.286q0.411-0.464 0.679-0.598t0.857-0.134h4.268q0.393 0 0.661-0.259t0.321-0.527q0.429-2.321 0.661-3.411 0.071-0.375-0.205-0.714t-0.652-0.339h-5.25q-0.518 0-0.857-0.339t-0.339-0.857v-0.75q0-0.518 0.339-0.848t0.857-0.33h6.179q0.321 0 0.625-0.241t0.357-0.527zM21.911 3.786q-0.268 1.304-0.955 4.759t-1.241 6.25-0.625 3.098q-0.107 0.393-0.161 0.58t-0.25 0.58-0.438 0.589-0.688 0.375-1.036 0.179h-4.839q-0.232 0-0.393 0.179-0.143 0.161-7.607 8.821-0.393 0.446-1.045 0.509t-0.866-0.098q-0.982-0.393-0.982-1.75v-25.179q0-0.982 0.679-1.83t2.143-0.848h15.857q1.696 0 2.268 0.946t0.179 2.839zM21.911 3.786l-2.821 14.107q0.071-0.304 0.625-3.098t1.241-6.25 0.955-4.759z"></path>
</symbol>
<symbol id="icon-wordpress" viewBox="0 0 32 32">
<path class="path1" d="M2.268 16q0-2.911 1.196-5.589l6.554 17.946q-3.5-1.696-5.625-5.018t-2.125-7.339zM25.268 15.304q0 0.339-0.045 0.688t-0.179 0.884-0.205 0.786-0.313 1.054-0.313 1.036l-1.357 4.571-4.964-14.75q0.821-0.054 1.571-0.143 0.339-0.036 0.464-0.33t-0.045-0.554-0.509-0.241l-3.661 0.179q-1.339-0.018-3.607-0.179-0.214-0.018-0.366 0.089t-0.205 0.268-0.027 0.33 0.161 0.295 0.348 0.143l1.429 0.143 2.143 5.857-3 9-5-14.857q0.821-0.054 1.571-0.143 0.339-0.036 0.464-0.33t-0.045-0.554-0.509-0.241l-3.661 0.179q-0.125 0-0.411-0.009t-0.464-0.009q1.875-2.857 4.902-4.527t6.563-1.67q2.625 0 5.009 0.946t4.259 2.661h-0.179q-0.982 0-1.643 0.723t-0.661 1.705q0 0.214 0.036 0.429t0.071 0.384 0.143 0.411 0.161 0.375 0.214 0.402 0.223 0.375 0.259 0.429 0.25 0.411q1.125 1.911 1.125 3.786zM16.232 17.196l4.232 11.554q0.018 0.107 0.089 0.196-2.25 0.786-4.554 0.786-2 0-3.875-0.571zM28.036 9.411q1.696 3.107 1.696 6.589 0 3.732-1.857 6.884t-4.982 4.973l4.196-12.107q1.054-3.018 1.054-4.929 0-0.75-0.107-1.411zM16 0q3.25 0 6.214 1.268t5.107 3.411 3.411 5.107 1.268 6.214-1.268 6.214-3.411 5.107-5.107 3.411-6.214 1.268-6.214-1.268-5.107-3.411-3.411-5.107-1.268-6.214 1.268-6.214 3.411-5.107 5.107-3.411 6.214-1.268zM16 31.268q3.089 0 5.92-1.214t4.875-3.259 3.259-4.875 1.214-5.92-1.214-5.92-3.259-4.875-4.875-3.259-5.92-1.214-5.92 1.214-4.875 3.259-3.259 4.875-1.214 5.92 1.214 5.92 3.259 4.875 4.875 3.259 5.92 1.214z"></path>
</symbol>
<symbol id="icon-stumbleupon" viewBox="0 0 34 32">
<path class="path1" d="M18.964 12.714v-2.107q0-0.75-0.536-1.286t-1.286-0.536-1.286 0.536-0.536 1.286v10.929q0 3.125-2.25 5.339t-5.411 2.214q-3.179 0-5.42-2.241t-2.241-5.42v-4.75h5.857v4.679q0 0.768 0.536 1.295t1.286 0.527 1.286-0.527 0.536-1.295v-11.071q0-3.054 2.259-5.214t5.384-2.161q3.143 0 5.393 2.179t2.25 5.25v2.429l-3.482 1.036zM28.429 16.679h5.857v4.75q0 3.179-2.241 5.42t-5.42 2.241q-3.161 0-5.411-2.223t-2.25-5.366v-4.786l2.339 1.089 3.482-1.036v4.821q0 0.75 0.536 1.277t1.286 0.527 1.286-0.527 0.536-1.277v-4.911z"></path>
</symbol>
<symbol id="icon-digg" viewBox="0 0 37 32">
<path class="path1" d="M5.857 5.036h3.643v17.554h-9.5v-12.446h5.857v-5.107zM5.857 19.661v-6.589h-2.196v6.589h2.196zM10.964 10.143v12.446h3.661v-12.446h-3.661zM10.964 5.036v3.643h3.661v-3.643h-3.661zM16.089 10.143h9.518v16.821h-9.518v-2.911h5.857v-1.464h-5.857v-12.446zM21.946 19.661v-6.589h-2.196v6.589h2.196zM27.071 10.143h9.5v16.821h-9.5v-2.911h5.839v-1.464h-5.839v-12.446zM32.911 19.661v-6.589h-2.196v6.589h2.196z"></path>
</symbol>
<symbol id="icon-spotify" viewBox="0 0 27 32">
<path class="path1" d="M20.125 21.607q0-0.571-0.536-0.911-3.446-2.054-7.982-2.054-2.375 0-5.125 0.607-0.75 0.161-0.75 0.929 0 0.357 0.241 0.616t0.634 0.259q0.089 0 0.661-0.143 2.357-0.482 4.339-0.482 4.036 0 7.089 1.839 0.339 0.196 0.589 0.196 0.339 0 0.589-0.241t0.25-0.616zM21.839 17.768q0-0.714-0.625-1.089-4.232-2.518-9.786-2.518-2.732 0-5.411 0.75-0.857 0.232-0.857 1.143 0 0.446 0.313 0.759t0.759 0.313q0.125 0 0.661-0.143 2.179-0.589 4.482-0.589 4.982 0 8.714 2.214 0.429 0.232 0.679 0.232 0.446 0 0.759-0.313t0.313-0.759zM23.768 13.339q0-0.839-0.714-1.25-2.25-1.304-5.232-1.973t-6.125-0.67q-3.643 0-6.5 0.839-0.411 0.125-0.688 0.455t-0.277 0.866q0 0.554 0.366 0.929t0.92 0.375q0.196 0 0.714-0.143 2.375-0.661 5.482-0.661 2.839 0 5.527 0.607t4.527 1.696q0.375 0.214 0.714 0.214 0.518 0 0.902-0.366t0.384-0.92zM27.429 16q0 3.732-1.839 6.884t-4.991 4.991-6.884 1.839-6.884-1.839-4.991-4.991-1.839-6.884 1.839-6.884 4.991-4.991 6.884-1.839 6.884 1.839 4.991 4.991 1.839 6.884z"></path>
</symbol>
<symbol id="icon-soundcloud" viewBox="0 0 41 32">
<path class="path1" d="M14 24.5l0.286-4.304-0.286-9.339q-0.018-0.179-0.134-0.304t-0.295-0.125q-0.161 0-0.286 0.125t-0.125 0.304l-0.25 9.339 0.25 4.304q0.018 0.179 0.134 0.295t0.277 0.116q0.393 0 0.429-0.411zM19.286 23.982l0.196-3.768-0.214-10.464q0-0.286-0.232-0.429-0.143-0.089-0.286-0.089t-0.286 0.089q-0.232 0.143-0.232 0.429l-0.018 0.107-0.179 10.339q0 0.018 0.196 4.214v0.018q0 0.179 0.107 0.304 0.161 0.196 0.411 0.196 0.196 0 0.357-0.161 0.161-0.125 0.161-0.357zM0.625 17.911l0.357 2.286-0.357 2.25q-0.036 0.161-0.161 0.161t-0.161-0.161l-0.304-2.25 0.304-2.286q0.036-0.161 0.161-0.161t0.161 0.161zM2.161 16.5l0.464 3.696-0.464 3.625q-0.036 0.161-0.179 0.161-0.161 0-0.161-0.179l-0.411-3.607 0.411-3.696q0-0.161 0.161-0.161 0.143 0 0.179 0.161zM3.804 15.821l0.446 4.375-0.446 4.232q0 0.196-0.196 0.196-0.179 0-0.214-0.196l-0.375-4.232 0.375-4.375q0.036-0.214 0.214-0.214 0.196 0 0.196 0.214zM5.482 15.696l0.411 4.5-0.411 4.357q-0.036 0.232-0.25 0.232-0.232 0-0.232-0.232l-0.375-4.357 0.375-4.5q0-0.232 0.232-0.232 0.214 0 0.25 0.232zM7.161 16.018l0.375 4.179-0.375 4.393q-0.036 0.286-0.286 0.286-0.107 0-0.188-0.080t-0.080-0.205l-0.357-4.393 0.357-4.179q0-0.107 0.080-0.188t0.188-0.080q0.25 0 0.286 0.268zM8.839 13.411l0.375 6.786-0.375 4.393q0 0.125-0.089 0.223t-0.214 0.098q-0.286 0-0.321-0.321l-0.321-4.393 0.321-6.786q0.036-0.321 0.321-0.321 0.125 0 0.214 0.098t0.089 0.223zM10.518 11.875l0.339 8.357-0.339 4.357q0 0.143-0.098 0.241t-0.241 0.098q-0.321 0-0.357-0.339l-0.286-4.357 0.286-8.357q0.036-0.339 0.357-0.339 0.143 0 0.241 0.098t0.098 0.241zM12.268 11.161l0.321 9.036-0.321 4.321q-0.036 0.375-0.393 0.375-0.339 0-0.375-0.375l-0.286-4.321 0.286-9.036q0-0.161 0.116-0.277t0.259-0.116q0.161 0 0.268 0.116t0.125 0.277zM19.268 24.411v0 0zM15.732 11.089l0.268 9.107-0.268 4.268q0 0.179-0.134 0.313t-0.313 0.134-0.304-0.125-0.143-0.321l-0.25-4.268 0.25-9.107q0-0.196 0.134-0.321t0.313-0.125 0.313 0.125 0.134 0.321zM17.5 11.429l0.25 8.786-0.25 4.214q0 0.196-0.143 0.339t-0.339 0.143-0.339-0.143-0.161-0.339l-0.214-4.214 0.214-8.786q0.018-0.214 0.161-0.357t0.339-0.143 0.33 0.143 0.152 0.357zM21.286 20.214l-0.25 4.125q0 0.232-0.161 0.393t-0.393 0.161-0.393-0.161-0.179-0.393l-0.107-2.036-0.107-2.089 0.214-11.357v-0.054q0.036-0.268 0.214-0.429 0.161-0.125 0.357-0.125 0.143 0 0.268 0.089 0.25 0.143 0.286 0.464zM41.143 19.875q0 2.089-1.482 3.563t-3.571 1.473h-14.036q-0.232-0.036-0.393-0.196t-0.161-0.393v-16.054q0-0.411 0.5-0.589 1.518-0.607 3.232-0.607 3.482 0 6.036 2.348t2.857 5.777q0.946-0.393 1.964-0.393 2.089 0 3.571 1.482t1.482 3.589z"></path>
</symbol>
<symbol id="icon-codepen" viewBox="0 0 32 32">
<path class="path1" d="M3.857 20.875l10.768 7.179v-6.411l-5.964-3.982zM2.75 18.304l3.446-2.304-3.446-2.304v4.607zM17.375 28.054l10.768-7.179-4.804-3.214-5.964 3.982v6.411zM16 19.25l4.857-3.25-4.857-3.25-4.857 3.25zM8.661 14.339l5.964-3.982v-6.411l-10.768 7.179zM25.804 16l3.446 2.304v-4.607zM23.339 14.339l4.804-3.214-10.768-7.179v6.411zM32 11.125v9.75q0 0.732-0.607 1.143l-14.625 9.75q-0.375 0.232-0.768 0.232t-0.768-0.232l-14.625-9.75q-0.607-0.411-0.607-1.143v-9.75q0-0.732 0.607-1.143l14.625-9.75q0.375-0.232 0.768-0.232t0.768 0.232l14.625 9.75q0.607 0.411 0.607 1.143z"></path>
</symbol>
<symbol id="icon-twitch" viewBox="0 0 32 32">
<path class="path1" d="M16 7.75v7.75h-2.589v-7.75h2.589zM23.107 7.75v7.75h-2.589v-7.75h2.589zM23.107 21.321l4.518-4.536v-14.196h-21.321v18.732h5.821v3.875l3.875-3.875h7.107zM30.214 0v18.089l-7.75 7.75h-5.821l-3.875 3.875h-3.875v-3.875h-7.107v-20.679l1.946-5.161h26.482z"></path>
</symbol>
<symbol id="icon-meanpath" viewBox="0 0 27 32">
<path class="path1" d="M23.411 15.036v2.036q0 0.429-0.241 0.679t-0.67 0.25h-3.607q-0.429 0-0.679-0.25t-0.25-0.679v-2.036q0-0.429 0.25-0.679t0.679-0.25h3.607q0.429 0 0.67 0.25t0.241 0.679zM14.661 19.143v-4.464q0-0.946-0.58-1.527t-1.527-0.58h-2.375q-1.214 0-1.714 0.929-0.5-0.929-1.714-0.929h-2.321q-0.946 0-1.527 0.58t-0.58 1.527v4.464q0 0.393 0.375 0.393h0.982q0.393 0 0.393-0.393v-4.107q0-0.429 0.241-0.679t0.688-0.25h1.679q0.429 0 0.679 0.25t0.25 0.679v4.107q0 0.393 0.375 0.393h0.964q0.393 0 0.393-0.393v-4.107q0-0.429 0.25-0.679t0.679-0.25h1.732q0.429 0 0.67 0.25t0.241 0.679v4.107q0 0.393 0.393 0.393h0.982q0.375 0 0.375-0.393zM25.179 17.429v-2.75q0-0.946-0.589-1.527t-1.536-0.58h-4.714q-0.946 0-1.536 0.58t-0.589 1.527v7.321q0 0.375 0.393 0.375h0.982q0.375 0 0.375-0.375v-3.214q0.554 0.75 1.679 0.75h3.411q0.946 0 1.536-0.58t0.589-1.527zM27.429 6.429v19.143q0 1.714-1.214 2.929t-2.929 1.214h-19.143q-1.714 0-2.929-1.214t-1.214-2.929v-19.143q0-1.714 1.214-2.929t2.929-1.214h19.143q1.714 0 2.929 1.214t1.214 2.929z"></path>
</symbol>
<symbol id="icon-pinterest-p" viewBox="0 0 23 32">
<path class="path1" d="M0 10.661q0-1.929 0.67-3.634t1.848-2.973 2.714-2.196 3.304-1.393 3.607-0.464q2.821 0 5.25 1.188t3.946 3.455 1.518 5.125q0 1.714-0.339 3.357t-1.071 3.161-1.786 2.67-2.589 1.839-3.375 0.688q-1.214 0-2.411-0.571t-1.714-1.571q-0.179 0.696-0.5 2.009t-0.42 1.696-0.366 1.268-0.464 1.268-0.571 1.116-0.821 1.384-1.107 1.545l-0.25 0.089-0.161-0.179q-0.268-2.804-0.268-3.357 0-1.643 0.384-3.688t1.188-5.134 0.929-3.625q-0.571-1.161-0.571-3.018 0-1.482 0.929-2.786t2.357-1.304q1.089 0 1.696 0.723t0.607 1.83q0 1.179-0.786 3.411t-0.786 3.339q0 1.125 0.804 1.866t1.946 0.741q0.982 0 1.821-0.446t1.402-1.214 1-1.696 0.679-1.973 0.357-1.982 0.116-1.777q0-3.089-1.955-4.813t-5.098-1.723q-3.571 0-5.964 2.313t-2.393 5.866q0 0.786 0.223 1.518t0.482 1.161 0.482 0.813 0.223 0.545q0 0.5-0.268 1.304t-0.661 0.804q-0.036 0-0.304-0.054-0.911-0.268-1.616-1t-1.089-1.688-0.58-1.929-0.196-1.902z"></path>
</symbol>
<symbol id="icon-periscope" viewBox="0 0 24 28">
<path class="path1" d="M12.285,1C6.696,1,2.277,5.643,2.277,11.243c0,5.851,7.77,14.578,10.007,14.578c1.959,0,9.729-8.728,9.729-14.578 C22.015,5.643,17.596,1,12.285,1z M12.317,16.551c-3.473,0-6.152-2.611-6.152-5.664c0-1.292,0.39-2.472,1.065-3.438 c0.206,1.084,1.18,1.906,2.352,1.906c1.322,0,2.393-1.043,2.393-2.333c0-0.832-0.447-1.561-1.119-1.975 c0.467-0.105,0.955-0.161,1.46-0.161c3.133,0,5.81,2.611,5.81,5.998C18.126,13.94,15.449,16.551,12.317,16.551z"></path>
</symbol>
<symbol id="icon-get-pocket" viewBox="0 0 31 32">
<path class="path1" d="M27.946 2.286q1.161 0 1.964 0.813t0.804 1.973v9.268q0 3.143-1.214 6t-3.259 4.911-4.893 3.259-5.973 1.205q-3.143 0-5.991-1.205t-4.902-3.259-3.268-4.911-1.214-6v-9.268q0-1.143 0.821-1.964t1.964-0.821h25.161zM15.375 21.286q0.839 0 1.464-0.589l7.214-6.929q0.661-0.625 0.661-1.518 0-0.875-0.616-1.491t-1.491-0.616q-0.839 0-1.464 0.589l-5.768 5.536-5.768-5.536q-0.625-0.589-1.446-0.589-0.875 0-1.491 0.616t-0.616 1.491q0 0.911 0.643 1.518l7.232 6.929q0.589 0.589 1.446 0.589z"></path>
</symbol>
<symbol id="icon-vimeo" viewBox="0 0 32 32">
<path class="path1" d="M30.518 9.25q-0.179 4.214-5.929 11.625-5.946 7.696-10.036 7.696-2.536 0-4.286-4.696-0.786-2.857-2.357-8.607-1.286-4.679-2.804-4.679-0.321 0-2.268 1.357l-1.375-1.75q0.429-0.375 1.929-1.723t2.321-2.063q2.786-2.464 4.304-2.607 1.696-0.161 2.732 0.991t1.446 3.634q0.786 5.125 1.179 6.661 0.982 4.446 2.143 4.446 0.911 0 2.75-2.875 1.804-2.875 1.946-4.393 0.232-2.482-1.946-2.482-1.018 0-2.161 0.464 2.143-7.018 8.196-6.821 4.482 0.143 4.214 5.821z"></path>
</symbol>
<symbol id="icon-reddit-alien" viewBox="0 0 32 32">
<path class="path1" d="M32 15.107q0 1.036-0.527 1.884t-1.42 1.295q0.214 0.821 0.214 1.714 0 2.768-1.902 5.125t-5.188 3.723-7.143 1.366-7.134-1.366-5.179-3.723-1.902-5.125q0-0.839 0.196-1.679-0.911-0.446-1.464-1.313t-0.554-1.902q0-1.464 1.036-2.509t2.518-1.045q1.518 0 2.589 1.125 3.893-2.714 9.196-2.893l2.071-9.304q0.054-0.232 0.268-0.375t0.464-0.089l6.589 1.446q0.321-0.661 0.964-1.063t1.411-0.402q1.107 0 1.893 0.777t0.786 1.884-0.786 1.893-1.893 0.786-1.884-0.777-0.777-1.884l-5.964-1.321-1.857 8.429q5.357 0.161 9.268 2.857 1.036-1.089 2.554-1.089 1.482 0 2.518 1.045t1.036 2.509zM7.464 18.661q0 1.107 0.777 1.893t1.884 0.786 1.893-0.786 0.786-1.893-0.786-1.884-1.893-0.777q-1.089 0-1.875 0.786t-0.786 1.875zM21.929 25q0.196-0.196 0.196-0.464t-0.196-0.464q-0.179-0.179-0.446-0.179t-0.464 0.179q-0.732 0.75-2.161 1.107t-2.857 0.357-2.857-0.357-2.161-1.107q-0.196-0.179-0.464-0.179t-0.446 0.179q-0.196 0.179-0.196 0.455t0.196 0.473q0.768 0.768 2.116 1.214t2.188 0.527 1.625 0.080 1.625-0.080 2.188-0.527 2.116-1.214zM21.875 21.339q1.107 0 1.884-0.786t0.777-1.893q0-1.089-0.786-1.875t-1.875-0.786q-1.107 0-1.893 0.777t-0.786 1.884 0.786 1.893 1.893 0.786z"></path>
</symbol>
<symbol id="icon-hashtag" viewBox="0 0 32 32">
<path class="path1" d="M17.696 18.286l1.143-4.571h-4.536l-1.143 4.571h4.536zM31.411 9.286l-1 4q-0.125 0.429-0.554 0.429h-5.839l-1.143 4.571h5.554q0.268 0 0.446 0.214 0.179 0.25 0.107 0.5l-1 4q-0.089 0.429-0.554 0.429h-5.839l-1.446 5.857q-0.125 0.429-0.554 0.429h-4q-0.286 0-0.464-0.214-0.161-0.214-0.107-0.5l1.393-5.571h-4.536l-1.446 5.857q-0.125 0.429-0.554 0.429h-4.018q-0.268 0-0.446-0.214-0.161-0.214-0.107-0.5l1.393-5.571h-5.554q-0.268 0-0.446-0.214-0.161-0.214-0.107-0.5l1-4q0.125-0.429 0.554-0.429h5.839l1.143-4.571h-5.554q-0.268 0-0.446-0.214-0.179-0.25-0.107-0.5l1-4q0.089-0.429 0.554-0.429h5.839l1.446-5.857q0.125-0.429 0.571-0.429h4q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5l-1.393 5.571h4.536l1.446-5.857q0.125-0.429 0.571-0.429h4q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5l-1.393 5.571h5.554q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5z"></path>
</symbol>
<symbol id="icon-chain" viewBox="0 0 30 32">
<path class="path1" d="M26 21.714q0-0.714-0.5-1.214l-3.714-3.714q-0.5-0.5-1.214-0.5-0.75 0-1.286 0.571 0.054 0.054 0.339 0.33t0.384 0.384 0.268 0.339 0.232 0.455 0.063 0.491q0 0.714-0.5 1.214t-1.214 0.5q-0.268 0-0.491-0.063t-0.455-0.232-0.339-0.268-0.384-0.384-0.33-0.339q-0.589 0.554-0.589 1.304 0 0.714 0.5 1.214l3.679 3.696q0.482 0.482 1.214 0.482 0.714 0 1.214-0.464l2.625-2.607q0.5-0.5 0.5-1.196zM13.446 9.125q0-0.714-0.5-1.214l-3.679-3.696q-0.5-0.5-1.214-0.5-0.696 0-1.214 0.482l-2.625 2.607q-0.5 0.5-0.5 1.196 0 0.714 0.5 1.214l3.714 3.714q0.482 0.482 1.214 0.482 0.75 0 1.286-0.554-0.054-0.054-0.339-0.33t-0.384-0.384-0.268-0.339-0.232-0.455-0.063-0.491q0-0.714 0.5-1.214t1.214-0.5q0.268 0 0.491 0.063t0.455 0.232 0.339 0.268 0.384 0.384 0.33 0.339q0.589-0.554 0.589-1.304zM29.429 21.714q0 2.143-1.518 3.625l-2.625 2.607q-1.482 1.482-3.625 1.482-2.161 0-3.643-1.518l-3.679-3.696q-1.482-1.482-1.482-3.625 0-2.196 1.571-3.732l-1.571-1.571q-1.536 1.571-3.714 1.571-2.143 0-3.643-1.5l-3.714-3.714q-1.5-1.5-1.5-3.643t1.518-3.625l2.625-2.607q1.482-1.482 3.625-1.482 2.161 0 3.643 1.518l3.679 3.696q1.482 1.482 1.482 3.625 0 2.196-1.571 3.732l1.571 1.571q1.536-1.571 3.714-1.571 2.143 0 3.643 1.5l3.714 3.714q1.5 1.5 1.5 3.643z"></path>
</symbol>
<symbol id="icon-thumb-tack" viewBox="0 0 21 32">
<path class="path1" d="M8.571 15.429v-8q0-0.25-0.161-0.411t-0.411-0.161-0.411 0.161-0.161 0.411v8q0 0.25 0.161 0.411t0.411 0.161 0.411-0.161 0.161-0.411zM20.571 21.714q0 0.464-0.339 0.804t-0.804 0.339h-7.661l-0.911 8.625q-0.036 0.214-0.188 0.366t-0.366 0.152h-0.018q-0.482 0-0.571-0.482l-1.357-8.661h-7.214q-0.464 0-0.804-0.339t-0.339-0.804q0-2.196 1.402-3.955t3.17-1.759v-9.143q-0.929 0-1.607-0.679t-0.679-1.607 0.679-1.607 1.607-0.679h11.429q0.929 0 1.607 0.679t0.679 1.607-0.679 1.607-1.607 0.679v9.143q1.768 0 3.17 1.759t1.402 3.955z"></path>
</symbol>
<symbol id="icon-arrow-left" viewBox="0 0 43 32">
<path class="path1" d="M42.311 14.044c-0.178-0.178-0.533-0.356-0.711-0.356h-33.778l10.311-10.489c0.178-0.178 0.356-0.533 0.356-0.711 0-0.356-0.178-0.533-0.356-0.711l-1.6-1.422c-0.356-0.178-0.533-0.356-0.889-0.356s-0.533 0.178-0.711 0.356l-14.578 14.933c-0.178 0.178-0.356 0.533-0.356 0.711s0.178 0.533 0.356 0.711l14.756 14.933c0 0.178 0.356 0.356 0.533 0.356s0.533-0.178 0.711-0.356l1.6-1.6c0.178-0.178 0.356-0.533 0.356-0.711s-0.178-0.533-0.356-0.711l-10.311-10.489h33.778c0.178 0 0.533-0.178 0.711-0.356 0.356-0.178 0.533-0.356 0.533-0.711v-2.133c0-0.356-0.178-0.711-0.356-0.889z"></path>
</symbol>
<symbol id="icon-arrow-right" viewBox="0 0 43 32">
<path class="path1" d="M0.356 17.956c0.178 0.178 0.533 0.356 0.711 0.356h33.778l-10.311 10.489c-0.178 0.178-0.356 0.533-0.356 0.711 0 0.356 0.178 0.533 0.356 0.711l1.6 1.6c0.178 0.178 0.533 0.356 0.711 0.356s0.533-0.178 0.711-0.356l14.756-14.933c0.178-0.356 0.356-0.711 0.356-0.889s-0.178-0.533-0.356-0.711l-14.756-14.933c0-0.178-0.356-0.356-0.533-0.356s-0.533 0.178-0.711 0.356l-1.6 1.6c-0.178 0.178-0.356 0.533-0.356 0.711s0.178 0.533 0.356 0.711l10.311 10.489h-33.778c-0.178 0-0.533 0.178-0.711 0.356-0.356 0.178-0.533 0.356-0.533 0.711v2.311c0 0.178 0.178 0.533 0.356 0.711z"></path>
</symbol>
<symbol id="icon-play" viewBox="0 0 22 28">
<path d="M21.625 14.484l-20.75 11.531c-0.484 0.266-0.875 0.031-0.875-0.516v-23c0-0.547 0.391-0.781 0.875-0.516l20.75 11.531c0.484 0.266 0.484 0.703 0 0.969z"></path>
</symbol>
<symbol id="icon-pause" viewBox="0 0 24 28">
<path d="M24 3v22c0 0.547-0.453 1-1 1h-8c-0.547 0-1-0.453-1-1v-22c0-0.547 0.453-1 1-1h8c0.547 0 1 0.453 1 1zM10 3v22c0 0.547-0.453 1-1 1h-8c-0.547 0-1-0.453-1-1v-22c0-0.547 0.453-1 1-1h8c0.547 0 1 0.453 1 1z"></path>
</symbol>
</defs>
</svg>
</body></html>
有些网站内容比较多,加载需要一些时间,我们可以通过 time.sleep() 实现等待几秒,确保我们获取的网页源代码是完整的:time.sleep(2)
已经成功的使用 selenium 获取的了网页源代码,接下来就是用selenium处理数据。
处理数据
selenium进行数据的处理和BeautifulSoup 对获取的网页源代码进行处理原理类似,只是语法上有所不同。
查找一个元素
以获取博客的 h1 元素为例,代码可以这样写:
browser = webdriver.Edge(options=options)
browser.get('https://wpblog.x0y1.com')
h1 = browser.find_element(by='tag name', value='h1')
print(h1.text)
browser.quit()
扇贝编程
find_element() 方法关键字参数 by=“tag name” 意思就是“根据标签名(查找)”,value=‘p’ 即标签名的具体值为 p。
不仅可以通过标签名查找,也可以通过class、id、name、链接(部分)文本去查找。
以下是例子:
browser = webdriver.Edge(options=options)
browser.get('https://wpblog.x0y1.com')
content = browser.find_element('class name', 'site-description')
print(content.text)
browser.quit()
爬虫示例站点
browser = webdriver.Edge(options=options)
browser.get('https://wpblog.x0y1.com')
content = browser.find_element('id', 'post-34')
print(content.text)
browser.quit()
发布于
9月 17, 2019
Python 环境搭建指南
近期在群里看到有小伙伴问,“如何脱离扇贝的环境,在自己的电脑里运行 Python 代码?”。是的,这是一个很好的问题。我们学 Python 是要在真实环境当中使用的,接下来我来给大家介绍一下搭建 Python 环境的常用方法。
继续阅读
“Python 环境搭建指南”
browser = webdriver.Edge(options=options)
browser.get('https://wpblog.x0y1.com')
content = browser.find_element('link text', '扇贝编程')
print(content.text)
browser.quit()
扇贝编程
browser = webdriver.Edge(options=options)
browser.get('https://wpblog.x0y1.com')
content = browser.find_element('partial link text', '扇贝')
print(content.text)
browser.quit()
扇贝编程
每一次都要打开网页,才能执行browser.find_element()
这些方法找到的元素(返回值)都是查找第一个符合条件的元素,属于 WebElement 对象,它和 BeautifulSoup 里的 Tag 对象一样,也有一个 text 属性,一样也是获取元素里的文本内容。
不同的是,Tag 对象通过字典取值的方式获取元素的属性值,而 WebElement 对象则使用 get_attribute() 方法来获取。
查找所有符合条件的元素
在上述基础上把 find_element() 方法改成 find_elements() 方法:
from selenium import webdriver
browser = webdriver.Edge()
browser.get('https://wpblog.x0y1.com')
# 注意下面是 elements
a_tags = browser.find_elements('tag name', 'a')
for tag in a_tags:
print(tag.text)
browser.quit()
WebElement 对象也可以调用 selenium 查找元素的方法。这样就和 BeautifulSoup 中的 Tag 对象一样,可以一层一层的查找元素,直到找到为止。
之前我们都是使用 requests 库获取网页源代码,并通过 text 属性取得其字符串形式。而 selenium 获取网页后的 page_source 属性值正是字符串格式的,所以可以BeautifulSoup来处理数据。
以上面获取博客网页源代码中所有的 a 元素 为例,加上 BeautifulSoup 可以这样写:
from selenium import webdriver
from bs4 import BeautifulSoup
browser = webdriver.Edge()
browser.get('https://wpblog.x0y1.com')
# 用 BeautifulSoup 解析网页源代码
soup = BeautifulSoup(browser.page_source, 'html.parser')
a_tags = soup.select('a')
for tag in a_tags:
print(tag.text)
browser.quit()
详细了解此警告
启用增强保护
自动 HTTPS
继续访问 wpblog.x0y1.com (不安全)
控制浏览器
学习两个新方法click() 和 send_keys():
- click() :点击
- send_keys():模拟按键输入
自动登录博客并获取文章内容的代码如下:
新的查找元素的方式:find_element(‘css selector’, …) 和find_elements(‘css selector’, …) ,这就运用 css 选择器的知识,将 css选择器以字符串的形式填入括号中,能帮我们更精准地查找元素。
from selenium import webdriver
import time
browser = webdriver.Edge(options=options)
# 打开博客
browser.get('https://wpblog.x0y1.com')
# 找到登录按钮
login_btn = browser.find_element('link text', '登录')
# 点击登录按钮
login_btn.click()
# 等待 2 秒钟,等页面加载完毕
time.sleep(2)
# 找到用户名输入框
user_login = browser.find_element('id', 'user_login')
# 输入用户名
user_login.send_keys('codetime')
# 找到密码输入框
user_pass = browser.find_element('id', 'user_pass')
# 输入密码
user_pass.send_keys('shanbay520')
# 找到登录按钮
wp_submit = browser.find_element('id', 'wp-submit')
# 点击登录按钮
wp_submit.click()
# 找到 Python 分类文章链接
python_cat = browser.find_element('css selector', 'section#categories-2 ul li a')
# 点击该分类
python_cat.click()
# 找到跳转的页面中的所有文章标题元素
titles = browser.find_elements('css selector', 'h2.entry-title a')
# 找到标题元素中内含的链接
links = [i.get_attribute('href') for i in titles]
# 依次打开 links 中的文章链接
for link in links:
browser.get(link)
# 获取文章正文内容
content = browser.find_element('class name', 'entry-content')
print(content.text)
browser.quit()
环节 人数
浏览网站 9943
加入购物车 3320
生成订单 963
支付订单 646
完成交易 412
年份 绝对额(亿元) 同比增长(%)
2006年 219438.5 12.70%
2007年 270092.3 14.20%
2008年 319244.6 9.70%
2009年 348517.7 9.40%
2010年 412119.3 10.60%
2011年 487940.2 9.50%
2012年 538580 7.90%
2013年 592963.2 7.80%
2014年 643563.1 7.30%
2015年 688858.2 6.90%
2016年 746395.1 6.70%
2017年 832035.9 6.90%
2018年 919281.1 6.60%
2019年 990865.1 6.10%
提到进位制,大家应该都对十进制比较熟悉,因为生活中大都使用十进制的,我们从小学就开始学习十进制的四则运算。既然人类对十进制这么熟悉,为什么计算机不和人类使用一样的进制呢?
二进制的表示
计算机底层由一堆电子电路组成,我们来看一个最简单的电路例子:
你可能已经猜到上面电路的功能了:
开关闭合时,灯泡亮
开关断开时,灯泡灭
我们可以用开关闭合代表 1,开关断开代表 0。这就是一个简单的二进制电路。
与此类似,磁盘其实是由很多小磁铁组成的,磁铁的 N 极表示 1,S 极表示 0。所以每个小磁铁和开关一样,也是有 0 和 1 两种状态。
早期的元器件只能表示这两种状态(比如开和关、 N 和 S 等),这就是为什么计算机用的是二进制的原因了。你想想,如果计算机用十进制的话,这个电子元器件得有十种状态,该多么复杂呢!
二进制的位和字节
不过仅用一位数能表示的数字有限,比如二进制是 0-1,十进制是 0-9,十六进制是 0-15。一位数字当然满足不了我们的需求,如果计算机只能处理 0-1 的范围,人类只能处理 0-9 的范围,一个磁盘就只能存储 0 和 1 这两个数字,那么社会发展可能早就停滞不前了吧!
聪明的人类选择用更多的位数来计数,十进制里我们可以用八位数表示亿以内的数字,二进制也是同理。我们一般把 8 位的二进制叫做一个字节(byte)。一个字节能表示 0-255 个值(想想为什么是 255 呢?)。如果想处理更多的信息,就需要更多的位数,比如 64 位的 CPU 能比 32 位的 CPU 处理更多更快的信息。
二进制里“3”的表示
了解这么多了,现在想想如果十进制里的 3,用二进制该怎么表示呢?
其实这个问题和“用十进制表示 9+2”是一样的道理。那就是通过进位。十进制是逢十进一,二进制是逢二进一。
现在我们来看下二进制里怎么表示 3:
上图清晰地展示了二进制里的计算过程,是不是和十进制的进位是一样的逻辑?
1 个字节(8 位的二进制数)里,每个位数权重不一样,分别是 1、2、4、8、16、32、64、128。与此类似,十进制是个、十、百、千、万等等。
现在,你是不是已经弄懂二进制了?
近期在群里看到有小伙伴问,“如何脱离扇贝的环境,在自己的电脑里运行 Python 代码?”。是的,这是一个很好的问题。我们学 Python 是要在真实环境当中使用的,接下来我来给大家介绍一下搭建 Python 环境的常用方法。
Python 有很多种安装方式,这里我们推荐一种最方便快捷的,直接安装 Anaconda,里面内置了 Python、常用第三方模块和用来写代码的 Spyder 编辑器,这简直是懒人神器!
我们有两种安装方式可选:1.官方网站安装 2.清华镜像站安装
网速较慢的同学可以选择第 2 种安装方式。(官方网站为国外源,清华镜像为国内源)
方式一 官方网站安装
点击官网地址:https://www.anaconda.com/products/individual#Downloads
根据自己的系统来选择相应的版本,选择 Graphical Installer 版本进行下载。
如果不清楚自己的 Windows 系统是 64 位还是 32 位,请移步:https://jingyan.baidu.com/article/9f63fb9172d416c8400f0e3b.html
如果是windows,我们可以通过 [我的电脑] 中进行查询:
或者我们也可使用cmd命令行的方式输入systeminfo命令进行查询:
方式二 清华镜像安装
进入清华软件镜像站 Anaconda 的下载页,网址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D
找到最新版本的 Anaconda,选择合适的版本下载。
安装包下载好之后,直接打开,看到如下界面。请跟着图中的红框进行操作。
点击 Next 进入下一步
点击 I Agree 进入下一步
选择 Just Me,然后点击 Next 进入下一步
此处可点击 Browse 选择安装位置,然后点击 Next 进入下一步
(注意,安装目录中不能有中文,否则安装会报错)
照着图中勾选,然后点击 Install 进行安装
稍等片刻后,点击 Next 进入下一步
直接点击 Next 进入下一步
点击 Finish 完成安装,如何不想看官方介绍可以取消两个勾选
新版本的anaconda还会有Kite的选择安装,Kite是一个非常实用的代码补全工具,可以选择安装让它成为你的得力助手!当然如果没有安装的话也不担心哦,因为anaconda作为一个非常优秀的代码编译器集成环境,spyder也有自带的代码补全功能,所以问题不大哦~
OK,到这里我们就完成全部的安装工作啦!
下面讲解如何使用 Anaconda 中的 Spyder 编写代码!
Spyder 的用法
在开始菜单中找到并打开 Anaconda Navigator。
然后会出现如下初始化界面。
初始化中…
稍等片刻后将出现如下界面:
点击绿色按钮
找到 Spyder,点击 Launch。
打开后,看到如下界面,我们就可以在里面写代码了。
Spyder会是一个集成度非常高的编译器,先简单介绍以下Spyder界面:
在左上角你可以切换为文件管理File,这样你就能看到工作路径空间里的对应内容了:
有学员可能会问到,如果我需要中文版的Spyder怎么办,别着急,接下来教你如何将语言切换为中文:
我们可以直接在默认的 temp.py 里写代码,也可以点击 文件 – 新建文件,创建一个新的 py 文件来写代码。
写好代码后,点击运行按钮即可运行 Python 代码啦~
第一次运行代码时,需要设置一下执行配置,直接点击运行即可。
然后我们就能在控制台看到代码的运行结果啦~
如果你想将temp.py重命名,只需要对其另存为即可修改它的名字~
Anaconda 中已经包含了我们课程中需要的绝大多数第三方模块,因此可以不用再使用 pip install 模块名 来安装第三方模块了。
爬虫课中的 selenium 模块并没有内置在 Anaconda 中,安装方法如下(其他第三方模块也类似):
点击 Anaconda Navigator 中的 Environments 面板
将右边的单选框选择为 All
在搜索框中输入要安装的第三方模块,比如 selenium
选中要安装的模块,注意要选名称完全一样的
点击右下角的 Apply 按钮
如果输入 selenium 后没有结果,点击 Channels 和 Update index 按钮试试~
然后会出现这样一个界面,直接点击 Apply 按钮即可安装。
稍等片刻后,模块便安装完毕,即可在代码中使用啦~
当然,anaconda为我们提供了一个非常强大的命令行工具:anaconda prompt 我们可以通过它来进行第三方库的安装。
在开始菜单 anaconda 目录下找到 anaconda prompt
可以利用 pip install [第三方库名] 进行安装
也可以利用anaconda自身的 conda install [第三方库名] 进行安装
两者效果是一样的,都能直接安装在 anaconda 的python环境中。
Spyder画图显示问题
学到后面的课程可能会涉及到画图问题,为了避免这种问题的出现,我们可以提前设置好一些画图的内容,省下后续的麻烦。
默认的设置是画图在inline画在Spyder界面中哦,我们可以点击左上区域中的Plots即可看到图片。
我们可以通过修改配置,修改为 Automatic 即 自动,即可让Spyder以弹窗的方式画图。
别忘了设置完重启Spyder 的 console 或者 更暴力一点,重启Spyder。
“我累了,需要很长时间的休息”
在 2018 年 7 月的一份名为“权力转移”的邮件列表帖子中,Guido van Rossum 写道:
“我不想再为 PEP 劳神了,而且尽管我做着艰难的决定,却发现仍然有很多人不满意。”
Guido van Rossum 部分邮件截图
“PEP” 是一种 Python 改进提案(Python Enhancement Proposal )。Guido 会亲自签署并确认每一份 PEP ,这也是他被称为仁慈的独裁者的一个原因。与此形成鲜明对比的是,PHP 的类似改进都是通过投票完成的。
Guido 对 Python 无疑是精益求精的——但 PEP 572 被接受后的第三天,雪片一样飞来的反馈意见让这个今年已经 62 岁的著名工程师应接不暇。
他出生在一个荷兰小城哈勒姆,于 1982 年毕业于荷兰的阿姆斯特丹大学的数学和计算机科学专业。随后进入了阿姆斯特丹的数学和计算机科学中心,成为了一名程序员。
在CWI ,蟒爹一干就是 12 年,直到 1994 年才离开。1989 年圣诞节期间,蟒爹为了打发无聊的圣诞假期,(???原来大神都是这么打发时间的)决心开发一个新的脚本解释程序,作为 ABC 语言的一种继承。
之所以选中 Python 作为程序的名字,是因为他非常喜欢一部英国肥皂剧:《Monty Python 飞行马戏团》。他觉得 Python 这个词非常有趣,很吸引人,从 Python 的命名就可以看出蟒爹对它的珍爱。
自 1989 年 Python 诞生,这位耿直的工程师倾尽了 30 年的心血不断完善它,这才有了如今的 Python 。
蟒爹穿着写有“人生苦短,我用 Python ”的T恤与大家合影
“我仍然会在这里”
“作为一个普通的核心开发者,我仍然会一直都在,而且我仍然可以指导人,或许可能有更多的时间。”
他补充说:“但我基本上给自己放了一个永久的假期不当 BDFL(Benevolent Dictator For Life),接下来你们就靠自己了。”
不论 Python 团队的人员如何变动,不可否认的是使用它的人越来越多了。
2018年7月编程语言指数榜
CodingDojo 最近将 Python 评为开发人员招聘广告中第二大最受欢迎的技能。Stack Overflow 的 2018 年开发人员调查将 Python 列为第七大流行的“编程、脚本和标记语言”,领先于 C#,Ruby 和 PHP。
事实证明,蟒爹的成就是非凡的:Python 成为世界上使用最多的语言之一。
在机器学习,人工智能,科学计算,金融,游戏,数学,物理等各个领域都有大量使用。各个大学和各大公司包括 Google,Facebook ,微软,阿里巴巴等,也都在使用 Python 。
“人生苦短,Python 是岸”
Python 是一种理想的初学者语言,也被用于重量级企业应用程序。
它的设计非常简单、优雅、清晰。
最主要的是,Python 是人工智能首先的编程语言——它在人工智能上的优势至今无人能够撼动。
Python 语言因此广受程序员的追捧,而其在就业、薪资待遇上也没有让人失望。
去年,职友集通过分析来自全国的 12809 份样例资料,显示全国 Python 工程师的平均月资能够达到 19160 元,其中 20 – 30 K 的工程师数量更是超过了四成。对程序员而言,Python 可能是一门投入小,但见效快、回报还高的编程语言。
其实正如蟒爹曾在致中国读者信中所写:
“ Python 这门语言让人们的生活变得更加便捷。它可以使你把精力集中于手头的工作,而不是纠缠于计算机系统每一个晦涩难懂的细节。”