tbl存款准备金率是什么么意思,大家能从这几个字母理解出多少种意思,比如the beautifule life,

相关词典网站:Life Is Beautiful (La Vita E Bella): Barcarolle (The Tales Of Hoffmann), L'Orchestra De La Suisse Ro-Various Artists, Life Is Beautiful (La Vita E Bella): Barcarolle (The Tales Of Hoffmann), L'Orchestra De La Suisse RoMP3下载,歌词下载 - 虾米音乐
Loading...
Life Is Beautiful (La Vita E Bella): Barcarolle (The Tales Of Hoffmann), L'Orchestra De La Suisse Ro
Sorry,此歌曲暂无文本歌词。
使用手机扫码收听单曲
打开虾米音乐APP
点击 扫一扫
扫描二维码
收藏Life Is Beautiful 的人们
听Life Is Beautiful 的人也听
关注虾米:&img src=&/50/v2-d31ffac5fd385f74a3fb8c65cbb94cf0_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/50/v2-d31ffac5fd385f74a3fb8c65cbb94cf0_r.jpg&&&blockquote&&i&本文首发:&u&&a href=&/?target=http%3A//zkeeer.space/%3Fp%3D395& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ZKeeer’s Blog——简单爬虫的通用步骤&i class=&icon-external&&&/i&&/a&&/u&&br&代码基于 python3.5&br&多图预警,长文预警&/i& &br&&i&知识点很多,适合小白,大神绕路&/i& &br&&i&文章不详细的地方,以后会补充。&/i&&br&&i&&b&欢迎署名和不署名转载&/b&&/i&&/blockquote&&h2&&i&目录:&/i&&/h2&&img src=&/50/v2-e2e0f6895dbd07ba19f8c_b.jpg& data-rawwidth=&437& data-rawheight=&597& class=&origin_image zh-lightbox-thumb& width=&437& data-original=&/50/v2-e2e0f6895dbd07ba19f8c_r.jpg&&&p&&br&&/p&&h2&1.获取数据&/h2&&blockquote&&i&爬虫,就是要千方百计地装成浏览器从网站骗数据。——我说的&/i&&/blockquote&&h2&1.1从requests.get()说起&/h2&&p&最开始一个简单的爬虫就是调用python的requests模块,使用get函数。(为了不祸害别人网站,我以自己的网站为例)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&import requests
url_response = requests.get(&http://zkeeer.space&)
print(url_response.status_code, url_response.text)
&/code&&/pre&&/div&&p&这里get函数从给出的URL获取数据,打印出状态码和获取的内容看看。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&200 &!DOCTYPE html&
&html lang=&zh-CN&&
&head&......
&/code&&/pre&&/div&&p&状态码200,说明平稳落地。后面是获取到的网页。&/p&&p&这里要说明一点,url_response.text 和 url_response.content的区别:&/p&&p&&b&.text返回的是Unicode类型,.content返回的是bytes型也就是传说的二进制的数据。当需要的数据是文本时,最好用.text,当你需要下载图片时,要用.content&/b&&/p&&p&上面是.text返回的值,下面打印出来.content的值让大家看看。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&200 b'&!DOCTYPE html&\r\n&html lang=&zh-CN&&\r\n &head&
&/code&&/pre&&/div&&p&看到前面的小b以及后面赤裸裸的\r\n了么?&/p&&p&我的博客挺简单没有那么大访问量,也不需要限制访问量,也不需要严查你的IP,UserAgent,Cookie等。当你需要&b&大量,高频次访问&/b&,而且访问的还是淘宝这样的商业网站,这时候你就需要伪装了,不能只是赤裸裸的用个get加个url,就向网站大喊:“&b&我!浏览器!给数据!&/b&” 也就我的博客这么好心给你,淘宝早就会“淘宝不想理你,并向你扔了个大创可贴”。&/p&&h2&1.2学会使用火狐浏览器开发者工具&/h2&&p&如何伪装一个浏览器?&/p&&blockquote&&i&学习当然都是从模仿开始——也是我说的!&/i&&/blockquote&&p&这里使用的是火狐浏览器开发者工具,别听这么高大上,&b&其实就是打开火狐浏览器按F12!&/b&&/p&&p&第一步输入网址进入我的博客,&a href=&/?target=http%3A//zkeeer.space& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&zkeeer.space&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 然后按F12,找到网络这一栏。它会提示你重新载入,那就按一下F5,刷新一下。&/p&&p&&br&&/p&&img src=&/50/v2-aea50b76ced5cbbdec8ff9_b.jpg& data-rawwidth=&878& data-rawheight=&221& class=&origin_image zh-lightbox-thumb& width=&878& data-original=&/50/v2-aea50b76ced5cbbdec8ff9_r.jpg&&&p&&br&&/p&&p&注意以下几栏。然后找到并点开我们需要的,也就是第一个&/p&&img src=&/50/v2-b7c48d5f08f6cfde322da4f_b.jpg& data-rawwidth=&1566& data-rawheight=&466& class=&origin_image zh-lightbox-thumb& width=&1566& data-original=&/50/v2-b7c48d5f08f6cfde322da4f_r.jpg&&&p&&br&&/p&&p&右侧会出来对应的详细信息。包括:消息头,Cookie,参数,响应,耗时,堆栈跟踪。&/p&&p&&b&首先requests.get(url,
params=None,
**kwargs),下面的顺序按照参数顺序,一一来。&/b&&/p&&h2&1.3requests.get()参数一:url&/h2&&p&消息头这一栏给出的请求方法是GET,即请求时使用requests.get(),如果这里是POST,对应使用requests.post()。get函数的url,即请求头的Host,这里是“zkeeer.space”&/p&&p&&br&&/p&&img src=&/50/v2-4f4dd226d2b492b6e87af8_b.jpg& data-rawwidth=&927& data-rawheight=&599& class=&origin_image zh-lightbox-thumb& width=&927& data-original=&/50/v2-4f4dd226d2b492b6e87af8_r.jpg&&&p&&br&&/p&&p&&br&&/p&&h2&1.4requests.get()参数二:params&/h2&&p&get(url,
params=None,
**kwargs)中params,是构成网址中一些参数,网址链接“?”后面的那些参数。举个栗子:我的一篇文章链接是&a href=&/?target=http%3A//zkeeer.space/%3Fp%3D383& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&zkeeer.space/?&/span&&span class=&invisible&&p=383&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 那么后面p=383就是get 的参数(当然你也可以直接访问&a href=&/?target=http%3A//zkeeer.space/%3Fp%3D383& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&zkeeer.space/?&/span&&span class=&invisible&&p=383&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&,而不需要参数)。&/p&&p&&br&&/p&&img src=&/50/v2-c6a432e2cfe8fc04adff83b106f749e0_b.jpg& data-rawwidth=&1600& data-rawheight=&900& class=&origin_image zh-lightbox-thumb& width=&1600& data-original=&/50/v2-c6a432e2cfe8fc04adff83b106f749e0_r.jpg&&&p&&br&&/p&&p&需要把这里列举的参数都写到params里面,哪怕是该参数没有值。&/p&&p&那么一开头我们那几行代码就应该这么写了。&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&n&&tar_url&/span& &span class=&o&&=&/span& &span class=&s2&&&http://zkeeer.space&&/span&
&span class=&c1&&# 目标网页&/span&
&span class=&n&&param&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&s2&&&p&&/span&&span class=&p&&:&/span& &span class=&mi&&383&/span&&span class=&p&&}&/span&
&span class=&c1&&# 请求头的参数&/span&
&span class=&n&&url_response&/span& &span class=&o&&=&/span& &span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&o&&=&/span&&span class=&n&&tar_url&/span&&span class=&p&&,&/span& &span class=&n&&params&/span&&span class=&o&&=&/span&&span class=&n&&param&/span&&span class=&p&&)&/span&
&span class=&nb&&print&/span&&span class=&p&&(&/span&&span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&status_code&/span&&span class=&p&&,&/span& &span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&这样获取到的页面就是“zkeeer.space/?p=383”对应的文章了。&/p&&p&&br&&/p&&img src=&/50/v2-bfbf23be50f2_b.jpg& data-rawwidth=&1573& data-rawheight=&752& class=&origin_image zh-lightbox-thumb& width=&1573& data-original=&/50/v2-bfbf23be50f2_r.jpg&&&p&&br&&/p&&p&&br&&/p&&h2&1.5requests.get()参数三:headers&/h2&&p&可能会有疑问,get(url,
params=None,
**kwargs)并没有headers这个参数啊。这个包含在**kwargs里面,同样还有另一常用的proxies,待会儿会说到。&/p&&p&headers应该写什么呢?下图所示的消息头中的请求头即是这里的headers参数。&/p&&p&&br&&/p&&img src=&/50/v2-4829eeb75c4e5f4068e3_b.jpg& data-rawwidth=&1599& data-rawheight=&763& class=&origin_image zh-lightbox-thumb& width=&1599& data-original=&/50/v2-4829eeb75c4e5f4068e3_r.jpg&&&p&&br&&/p&&p&跟参数一样,需要把请求头的所有信息写入headers(&b&如果网站不查cookie的话,cookie没必要写&/b&)。如果对这些参数不了解,可以点击后面对应的&b&详细了解&/b&,介绍的很详细。&/p&&p&上面的几行代码又要进化了。&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&n&&tar_url&/span& &span class=&o&&=&/span& &span class=&s2&&&http://zkeeer.space&&/span&
&span class=&c1&&# 目标网页&/span&
&span class=&n&&param&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&s2&&&p&&/span&&span class=&p&&:&/span& &span class=&mi&&383&/span&&span class=&p&&}&/span&
&span class=&c1&&# 请求头的参数&/span&
&span class=&n&&header&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&c1&&# 请求头部&/span&
&span class=&s2&&&User-Agent&&/span&&span class=&p&&:&/span& &span class=&s2&&&Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/ Firefox/55.0&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept&&/span&&span class=&p&&:&/span& &span class=&s2&&&text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Language&&/span&&span class=&p&&:&/span& &span class=&s2&&&zh-CN,q=0.8,en-US;q=0.5,q=0.3&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Encoding&&/span&&span class=&p&&:&/span& &span class=&s2&&&gzip, deflate&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Referer&&/span&&span class=&p&&:&/span& &span class=&s2&&&http://zkeeer.space/&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Connection&&/span&&span class=&p&&:&/span& &span class=&s2&&&keep-alive&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Upgrade-Insecure-Requests&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&
&span class=&p&&}&/span&
&span class=&n&&url_response&/span& &span class=&o&&=&/span& &span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&o&&=&/span&&span class=&n&&tar_url&/span&&span class=&p&&,&/span& &span class=&n&&params&/span&&span class=&o&&=&/span&&span class=&n&&param&/span&&span class=&p&&,&/span& &span class=&n&&headers&/span&&span class=&o&&=&/span&&span class=&n&&header&/span&&span class=&p&&)&/span&
&span class=&nb&&print&/span&&span class=&p&&(&/span&&span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&status_code&/span&&span class=&p&&,&/span& &span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&这样一来就比较完备了。&/p&&p&但是这样情况下,高频次访问对服务器造成压力了,可能会分析哪个UserAgent访问次数最多,发现是你在狂刷人家网站,这时候就有可能给你禁了这个UserAgent,这时候你需要更多的UserAgent随机挑选进行访问。&/p&&p&我在上篇文章《&u&&a href=&/?target=http%3A//zkeeer.space/%3Fp%3D383& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&获取爬虫所需要的代理IP&i class=&icon-external&&&/i&&/a&&/u&》中的代码中就有收集的UserAgent,见&u&&a href=&/?target=https%3A///ZKeeer/IPProxy/blob/master/Config.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github&i class=&icon-external&&&/i&&/a&&/u& 。&/p&&p&&br&&/p&&img src=&/50/v2-becdefa58e501c3cc32bea8_b.jpg& data-rawwidth=&910& data-rawheight=&700& class=&origin_image zh-lightbox-thumb& width=&910& data-original=&/50/v2-becdefa58e501c3cc32bea8_r.jpg&&&p&&br&&/p&&p&可以使用random.choice()随便挑嘛。&/p&&h2&1.6requests.get()参数四:proxies&/h2&&p&上面提到了,这个参数是代理,对,是代理。当你使用随机UserAgent的人家没法封了。就会查你IP,发现这个IP刷爆了网站,直接就封了。这时候你要使用代理IP。&/p&&p&上面的代码又进化了呢!&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&n&&tar_url&/span& &span class=&o&&=&/span& &span class=&s2&&&http://zkeeer.space&&/span&
&span class=&c1&&# 目标网页&/span&
&span class=&n&&param&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&s2&&&p&&/span&&span class=&p&&:&/span& &span class=&mi&&383&/span&&span class=&p&&}&/span&
&span class=&c1&&# 请求头的参数&/span&
&span class=&n&&proxy&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&s2&&&http&&/span&&span class=&p&&:&/span& &span class=&s2&&&http://&/span&&span class=&si&&{}&/span&&span class=&s2&&:&/span&&span class=&si&&{}&/span&&span class=&s2&&&&/span&&span class=&o&&.&/span&&span class=&n&&format&/span&&span class=&p&&(&/span&&span class=&s2&&&221.8.186.249&&/span&&span class=&p&&,&/span& &span class=&s2&&&80&&/span&&span class=&p&&),&/span&
&span class=&s2&&&https&&/span&&span class=&p&&:&/span& &span class=&s2&&&https://&/span&&span class=&si&&{}&/span&&span class=&s2&&:&/span&&span class=&si&&{}&/span&&span class=&s2&&&&/span&&span class=&o&&.&/span&&span class=&n&&format&/span&&span class=&p&&(&/span&&span class=&s2&&&221.8.186.249&&/span&&span class=&p&&,&/span& &span class=&s2&&&80&&/span&&span class=&p&&)}&/span&
&span class=&c1&&#代理IP&/span&
&span class=&n&&header&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&c1&&# 请求头部&/span&
&span class=&s2&&&User-Agent&&/span&&span class=&p&&:&/span& &span class=&s2&&&Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/ Firefox/55.0&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept&&/span&&span class=&p&&:&/span& &span class=&s2&&&text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Language&&/span&&span class=&p&&:&/span& &span class=&s2&&&zh-CN,q=0.8,en-US;q=0.5,q=0.3&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Encoding&&/span&&span class=&p&&:&/span& &span class=&s2&&&gzip, deflate&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Referer&&/span&&span class=&p&&:&/span& &span class=&s2&&&http://zkeeer.space/&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Connection&&/span&&span class=&p&&:&/span& &span class=&s2&&&keep-alive&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Upgrade-Insecure-Requests&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&
&span class=&p&&}&/span&
&span class=&n&&url_response&/span& &span class=&o&&=&/span& &span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&o&&=&/span&&span class=&n&&tar_url&/span&&span class=&p&&,&/span& &span class=&n&&params&/span&&span class=&o&&=&/span&&span class=&n&&param&/span&&span class=&p&&,&/span& &span class=&n&&proxies&/span&&span class=&o&&=&/span&&span class=&n&&proxy&/span&&span class=&p&&,&/span& &span class=&n&&headers&/span&&span class=&o&&=&/span&&span class=&n&&header&/span&&span class=&p&&)&/span&
&span class=&nb&&print&/span&&span class=&p&&(&/span&&span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&status_code&/span&&span class=&p&&,&/span& &span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&问题又来了,长时间使用同一个代理IP,也会被封啊,我要获取大量代理IP,最好还是匿名或者高匿。这些代理IP从哪来的?我该怎么获取?上篇文章我写了如果获取大量代理IP以及使用:&u&&a href=&/?target=http%3A//zkeeer.space/%3Fp%3D383& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&获取爬虫所需要的代理IP &i class=&icon-external&&&/i&&/a&&/u&&/p&&p&&b&如果需要高质量IP可以从代理网站或者淘宝买,大量,不贵。&/b&&/p&&h2&1.7总结&/h2&&p&至此,基本的获取网页已经差不多了,大多数网站你都可以畅行。尽管,也不能暴力访问一个网站,要有&b&公德心&/b&嘛,我写爬虫还sleep(0.5)呢。&/p&&p&火狐浏览器的开发者工具很好用,希望大家能发挥其作用。&/p&&p&&b&爱惜我的博客!多多sleep,狠下心来拿出来练手不容易,别整崩了。&/b&&/p&&p&&br&&/p&&h2&2.提取数据&/h2&&p&获取完网页接下来应该提取数据了。获取网页的数据,我想提取网页中特定的文字,或者是数据,或者是图片,这就是网页主要提取的吧。&/p&&h2&2.1提取文字&/h2&&p&先说提取文字,强烈推荐&b&正则表达式和BeautifulSoup4&/b&,太强大了。简直就是加特林哒哒哒哒冒蓝火的那种;当然我的水平仅限于能用,就不出来献丑了。大家按照网上的教程来就可以。正则表达式和beautifulsoup这两种效率比较高,有文章做过对比试验,我找到了再补充。&/p&&h2&2.2提取图片&/h2&&p&以我博客中《&u&&a href=&/?target=http%3A//zkeeer.space/%3Fp%3D383& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&获取爬虫所需要的代理IP&i class=&icon-external&&&/i&&/a&&/u&》文章为例,提取其中的图片。提取网页中的图片,我们可以用提取文字的方式,用正则表达式获取图片链接。这时候,又用的get函数。跟获取网页一样,获取图片。记得前面说过的text和content的区别。这里要使用后者。那么如何保存一张图片呢?看下面的代码示例。&/p&&p&打开火狐浏览器开发者工具。这次使用的是查看器,而不是网络。一层层找到上面文章中的图片所在位置及相关链接。&/p&&p&&br&&/p&&img src=&/50/v2-dba1724ce9afd19c263cb0b83bb9502c_b.jpg& data-rawwidth=&1105& data-rawheight=&737& class=&origin_image zh-lightbox-thumb& width=&1105& data-original=&/50/v2-dba1724ce9afd19c263cb0b83bb9502c_r.jpg&&&p&&br&&/p&&p&找到了&img&标签,这时可以右键查看网页源代码,查找一下看有多少是跟你目标相似的,看看如何区分&/p&&p&&br&&/p&&img src=&/50/v2-7a62fc4af2bf4_b.jpg& data-rawwidth=&1218& data-rawheight=&445& class=&origin_image zh-lightbox-thumb& width=&1218& data-original=&/50/v2-7a62fc4af2bf4_r.jpg&&&p&&br&&/p&&p&我找到了10项,但只有一项是我需要的,于是我把正则式写成了&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&img class=\&[^\&]+\& src=\&([^\&]+)\&
&/code&&/pre&&/div&&p&这时候可以用 &u&&a href=&/?target=http%3A///regex& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&站长工具-正则表达式在线测试&i class=&icon-external&&&/i&&/a&&/u& 测试下自己写的正则表达式是否正确&/p&&p&&br&&/p&&img src=&/50/v2-d34cce044b622c44c02be_b.jpg& data-rawwidth=&1191& data-rawheight=&471& class=&origin_image zh-lightbox-thumb& width=&1191& data-original=&/50/v2-d34cce044b622c44c02be_r.jpg&&&p&&br&&/p&&p&成功了!代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&re&/span&
&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&n&&tar_url&/span& &span class=&o&&=&/span& &span class=&s2&&&http://zkeeer.space&&/span&
&span class=&c1&&# 目标网页&/span&
&span class=&n&&param&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&s2&&&p&&/span&&span class=&p&&:&/span& &span class=&mi&&383&/span&&span class=&p&&}&/span&
&span class=&c1&&# 请求头的参数&/span&
&span class=&n&&header&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&c1&&# 请求头部&/span&
&span class=&s2&&&User-Agent&&/span&&span class=&p&&:&/span& &span class=&s2&&&Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/ Firefox/55.0&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept&&/span&&span class=&p&&:&/span& &span class=&s2&&&text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Language&&/span&&span class=&p&&:&/span& &span class=&s2&&&zh-CN,q=0.8,en-US;q=0.5,q=0.3&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Encoding&&/span&&span class=&p&&:&/span& &span class=&s2&&&gzip, deflate&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Referer&&/span&&span class=&p&&:&/span& &span class=&s2&&&http://zkeeer.space/&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Connection&&/span&&span class=&p&&:&/span& &span class=&s2&&&keep-alive&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Upgrade-Insecure-Requests&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&
&span class=&p&&}&/span&
&span class=&n&&url_response&/span& &span class=&o&&=&/span& &span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&o&&=&/span&&span class=&n&&tar_url&/span&&span class=&p&&,&/span& &span class=&n&&params&/span&&span class=&o&&=&/span&&span class=&n&&param&/span&&span class=&p&&,&/span& &span class=&n&&headers&/span&&span class=&o&&=&/span&&span class=&n&&header&/span&&span class=&p&&)&/span&
&span class=&n&&img_url&/span& &span class=&o&&=&/span& &span class=&n&&re&/span&&span class=&o&&.&/span&&span class=&n&&findall&/span&&span class=&p&&(&/span&&span class=&s2&&r&&img class=&/span&&span class=&se&&\&&/span&&span class=&s2&&[^&/span&&span class=&se&&\&&/span&&span class=&s2&&]+&/span&&span class=&se&&\&&/span&&span class=&s2&& src=&/span&&span class=&se&&\&&/span&&span class=&s2&&([^&/span&&span class=&se&&\&&/span&&span class=&s2&&]+)&/span&&span class=&se&&\&&/span&&span class=&s2&&&&/span&&span class=&p&&,&/span& &span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&&span class=&p&&)&/span&
&span class=&nb&&print&/span&&span class=&p&&(&/span&&span class=&n&&img_url&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&])&/span&
&/code&&/pre&&/div&&p&输出结果:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&http://zkeeer.space/wp-content/uploads/2017/08/逻辑图-.png
&/code&&/pre&&/div&&p&这样有了图片的链接,我们就可以使用链接获取并保存图片了。&/p&&p&&b&一定要注意使用F12,并仔细查看请求头和参数!&/b&&/p&&p&&b&一定要注意使用F12,并仔细查看请求头和参数!&/b&&/p&&p&&b&一定要注意使用F12,并仔细查看请求头和参数!&/b&&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&re&/span&
&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&n&&tar_url&/span& &span class=&o&&=&/span& &span class=&s2&&&http://zkeeer.space&&/span&
&span class=&c1&&# 目标网页&/span&
&span class=&n&&param&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&s2&&&p&&/span&&span class=&p&&:&/span& &span class=&mi&&383&/span&&span class=&p&&}&/span&
&span class=&c1&&# 请求头的参数&/span&
&span class=&n&&header&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&c1&&# 请求头部&/span&
&span class=&s2&&&User-Agent&&/span&&span class=&p&&:&/span& &span class=&s2&&&Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/ Firefox/55.0&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept&&/span&&span class=&p&&:&/span& &span class=&s2&&&text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Language&&/span&&span class=&p&&:&/span& &span class=&s2&&&zh-CN,q=0.8,en-US;q=0.5,q=0.3&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Encoding&&/span&&span class=&p&&:&/span& &span class=&s2&&&gzip, deflate&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Referer&&/span&&span class=&p&&:&/span& &span class=&s2&&&http://zkeeer.space/&&/span&&span class=&p&&,&/span& &span class=&c1&&#防盗链&/span&
&span class=&s2&&&Connection&&/span&&span class=&p&&:&/span& &span class=&s2&&&keep-alive&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Upgrade-Insecure-Requests&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&
&span class=&p&&}&/span&
&span class=&n&&url_response&/span& &span class=&o&&=&/span& &span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&o&&=&/span&&span class=&n&&tar_url&/span&&span class=&p&&,&/span& &span class=&n&&params&/span&&span class=&o&&=&/span&&span class=&n&&param&/span&&span class=&p&&,&/span& &span class=&n&&headers&/span&&span class=&o&&=&/span&&span class=&n&&header&/span&&span class=&p&&)&/span&
&span class=&n&&img_header&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&c1&&# 请求头部&/span&
&span class=&s2&&&User-Agent&&/span&&span class=&p&&:&/span& &span class=&s2&&&Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/ Firefox/55.0&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept&&/span&&span class=&p&&:&/span& &span class=&s2&&&text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Language&&/span&&span class=&p&&:&/span& &span class=&s2&&&zh-CN,q=0.8,en-US;q=0.5,q=0.3&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Accept-Encoding&&/span&&span class=&p&&:&/span& &span class=&s2&&&gzip, deflate&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Referer&&/span&&span class=&p&&:&/span& &span class=&s2&&&http://zkeeer.space/?p=383&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Connection&&/span&&span class=&p&&:&/span& &span class=&s2&&&keep-alive&&/span&&span class=&p&&,&/span&
&span class=&s2&&&Upgrade-Insecure-Requests&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&
&span class=&p&&}&/span&
&span class=&c1&&# 获取图片链接&/span&
&span class=&n&&img_url&/span& &span class=&o&&=&/span& &span class=&n&&re&/span&&span class=&o&&.&/span&&span class=&n&&findall&/span&&span class=&p&&(&/span&&span class=&s2&&r&&img class=&/span&&span class=&se&&\&&/span&&span class=&s2&&[^&/span&&span class=&se&&\&&/span&&span class=&s2&&]+&/span&&span class=&se&&\&&/span&&span class=&s2&& src=&/span&&span class=&se&&\&&/span&&span class=&s2&&([^&/span&&span class=&se&&\&&/span&&span class=&s2&&]+)&/span&&span class=&se&&\&&/span&&span class=&s2&&&&/span&&span class=&p&&,&/span& &span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&&span class=&p&&)[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&
&span class=&c1&&# 从图片链接中提取图片名&/span&
&span class=&n&&img_name&/span& &span class=&o&&=&/span& &span class=&n&&re&/span&&span class=&o&&.&/span&&span class=&n&&findall&/span&&span class=&p&&(&/span&&span class=&s2&&r&([^/]+.png)&&/span&&span class=&p&&,&/span& &span class=&n&&img_url&/span&&span class=&p&&)[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&
&span class=&c1&&# 请求&/span&
&span class=&n&&url_response&/span& &span class=&o&&=&/span& &span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&o&&=&/span&&span class=&n&&img_url&/span&&span class=&p&&,&/span& &span class=&n&&headers&/span&&span class=&o&&=&/span&&span class=&n&&img_header&/span&&span class=&p&&)&/span&
&span class=&c1&&# 保存图片&/span&
&span class=&k&&with&/span& &span class=&nb&&open&/span&&span class=&p&&(&/span&&span class=&n&&img_name&/span&&span class=&p&&,&/span& &span class=&s2&&&wb&&/span&&span class=&p&&)&/span& &span class=&k&&as&/span& &span class=&n&&fw&/span&&span class=&p&&:&/span&
&span class=&n&&fw&/span&&span class=&o&&.&/span&&span class=&n&&write&/span&&span class=&p&&(&/span&&span class=&n&&url_response&/span&&span class=&o&&.&/span&&span class=&n&&content&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&运行程序查看得到的图片(我的vps配置特别低,速度特慢,轻喷。&u&&a href=&/?target=https%3A///%3Fref%3D7170172& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&给Vultr的VPS打个广告,有优惠!&i class=&icon-external&&&/i&&/a&&/u&)&/p&&p&&br&&/p&&img src=&/50/v2-1eda31bd3a3a6f6dc6a091_b.jpg& data-rawwidth=&1024& data-rawheight=&503& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/50/v2-1eda31bd3a3a6f6dc6a091_r.jpg&&&p&&br&&/p&&p&好了,到这儿可以获取基本的网页信息了。而且高频次访问基本上不会被封。&br&你以为到这就结束了吗?&/p&&h2&2.3提取动态加载的数据&/h2&&p&在获取有些重要数据的时候。这些数据是动态加载的。这也是反爬虫的一种手段,下面我有提及反爬虫。&/p&&p&当我只获取这个网页的时候,根本不会显示这些数据。这个时候又要让你的爬虫装一次浏览器。当然不能说:&b&我!浏览器!给数据!&/b& 这个时候你不光要卖萌,还要回答问题。快看快看,我是浏览器,我是可爱的浏览器,快给我数据啊。&/p&&p&这时候人家就问你,&b&你是从哪儿(Refer)找到我的?你的鸡毛信(ID)呢?&/b&你从袖筒里排出几个参数,浏览器一看,哎呀,大兄弟,真的是你,快给你数据。&b&这时候不要吭声,趁他不注意,拿了数据赶紧跑。&/b&&/p&&p&&br&&/p&&img src=&/50/v2-94c5aff4bfc1b1c9fa2d168_b.jpg& data-rawwidth=&188& data-rawheight=&188& class=&content_image& width=&188&&&p&&br&&/p&&p&获取方式跟上面获取网页一样。同样是使用火狐。以淘宝米6商品评论为例,我随便找的,别说我软广:&/p&&p&&br&&/p&&img src=&/50/v2-b0a8f53ffb0e_b.jpg& data-rawwidth=&1521& data-rawheight=&775& class=&origin_image zh-lightbox-thumb& width=&1521& data-original=&/50/v2-b0a8f53ffb0e_r.jpg&&&p&&br&&/p&&p&点击评论,然后看到网络这一栏,动态加载的内容就出来了,从域名里我找到了&a href=&/?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,对应左边两个文件,一个是detailCommon.htm 另一个是freeRateList.htm;我查看了下,分别对应评论中的大家印象和详细评论。查看哪儿?查看对应的响应内容。&/p&&p&这里就以“大家印象”为例:按照1.获取数据的步骤,获取到了如下结果:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&import re
import requests
tar_url = &/detailCommon.htm&
# 商品链接
refer = &/item.htm?spm=a230r.1.14.119.76bf523Zih6Ob&id=&ns=1&abbucket=12&
# 从商品链接中提取商品ID
NumId = re.findall(r&id=(\d+)\&&, refer)
param = {&auctionNumId&: NumId,
&userNumId&: &&,
&callback&: &json_tbc_rate_summary&}
# 头部信息
header = {
'Accept': 'text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, compress',
'Accept-Language': 'zh-CN,q=0.8,q=0.6,q=0.4',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': &1&,
'Referer': refer,
'User-Agent': &Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/ Firefox/55.0&
url_content = requests.get(url=tar_url, params=param, headers=header)
print(&url_content: &, url_content.text)
except BaseException as e:
&/code&&/pre&&/div&&p&结果:&/p&&div class=&highlight&&&pre&&code class=&language-json&&&span&&/span&&span class=&err&&json_tbc_rate_summary(&/span&&span class=&p&&{&/span&&span class=&nt&&&watershed&&/span&&span class=&p&&:&/span&&span class=&mi&&100&/span&&span class=&p&&,&/span&&span class=&nt&&&isShowDefaultSort&&/span&&span class=&p&&:&/span&&span class=&kc&&true&/span&&span class=&p&&,&/span&&span class=&nt&&&askAroundDisabled&&/span&&span class=&p&&:&/span&&span class=&kc&&false&/span&&span class=&p&&,&/span&&span class=&nt&&&sellerRefundCount&&/span&&span class=&p&&:&/span&&span class=&mi&&6&/span&&span class=&p&&,&/span&&span class=&nt&&&skuSelected&&/span&&span class=&p&&:&/span&&span class=&kc&&true&/span&&span class=&p&&,&/span&&span class=&nt&&&data&&/span&&span class=&p&&:{&/span&&span class=&nt&&&newSearch&&/span&&span class=&p&&:&/span&&span class=&kc&&false&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:{&/span&&span class=&nt&&&total&&/span&&span class=&p&&:&/span&&span class=&mi&&4689&/span&&span class=&p&&,&/span&&span class=&nt&&&tryReport&&/span&&span class=&p&&:&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&nt&&&goodFull&&/span&&span class=&p&&:&/span&&span class=&mi&&4622&/span&&span class=&p&&,&/span&&span class=&nt&&&additional&&/span&&span class=&p&&:&/span&&span class=&mi&&243&/span&&span class=&p&&,&/span&&span class=&nt&&&correspond&&/span&&span class=&p&&:&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&nt&&&normal&&/span&&span class=&p&&:&/span&&span class=&mi&&30&/span&&span class=&p&&,&/span&&span class=&nt&&&hascontent&&/span&&span class=&p&&:&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&nt&&&good&&/span&&span class=&p&&:&/span&&span class=&mi&&4622&/span&&span class=&p&&,&/span&&span class=&nt&&&pic&&/span&&span class=&p&&:&/span&&span class=&mi&&588&/span&&span class=&p&&,&/span&&span class=&nt&&&bad&&/span&&span class=&p&&:&/span&&span class=&mi&&37&/span&&span class=&p&&,&/span&&span class=&nt&&&totalFull&&/span&&span class=&p&&:&/span&&span class=&mi&&4689&/span&&span class=&p&&},&/span&&span class=&nt&&&spuRatting&&/span&&span class=&p&&:[],&/span&&span class=&nt&&&correspond&&/span&&span class=&p&&:&/span&&span class=&s2&&&4.8&&/span&&span class=&p&&,&/span&&span class=&nt&&&impress&&/span&&span class=&p&&:[{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&手机不错&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&477&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&620-11&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&手机是正品&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&243&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&1020-11&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&系统很强大&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&214&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&921-11&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&态度不错&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&144&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&10120-11&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&款式好看&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&115&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&121-11&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&快递不错&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&108&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&420-11&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&手感很好&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&90&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&721-11&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&性价比很高&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&85&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&20520-11&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&性能一般&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&39&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&-1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&921-13&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&},{&/span&&span class=&nt&&&title&&/span&&span class=&p&&:&/span&&span class=&s2&&&配件一般&&/span&&span class=&p&&,&/span&&span class=&nt&&&count&&/span&&span class=&p&&:&/span&&span class=&mi&&35&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&mi&&-1&/span&&span class=&p&&,&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:&/span&&span class=&s2&&&621-13&&/span&&span class=&p&&,&/span&&span class=&nt&&&scm&&/span&&span class=&p&&:&/span&&span class=&s2&&&&&/span&&span class=&p&&}],&/span&&span class=&nt&&&attribute&&/span&&span class=&p&&:[{&/span&&span class=&nt&&&name&&/span&&span class=&p&&:&/span&&span class=&s2&&&版本类型&&/span&&span class=&p&&,&/span&&span class=&nt&&&options&&/span&&span class=&p&&:[{&/span&&span class=&nt&&&name&&/span&&span class=&p&&:&/span&&span class=&s2&&&中国大陆&&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&s2&&&中国大陆&&/span&&span class=&p&&}]},{&/span&&span class=&nt&&&name&&/span&&span class=&p&&:&/span&&span class=&s2&&&版本类型&&/span&&span class=&p&&,&/span&&span class=&nt&&&options&&/span&&span class=&p&&:[{&/span&&span class=&nt&&&name&&/span&&span class=&p&&:&/span&&span class=&s2&&&中国大陆&&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&s2&&&中国大陆&&/span&&span class=&p&&}]},{&/span&&span class=&nt&&&name&&/span&&span class=&p&&:&/span&&span class=&s2&&&版本类型&&/span&&span class=&p&&,&/span&&span class=&nt&&&options&&/span&&span class=&p&&:[{&/span&&span class=&nt&&&name&&/span&&span class=&p&&:&/span&&span class=&s2&&&中国大陆&&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&s2&&&中国大陆&&/span&&span class=&p&&}]},{&/span&&span class=&nt&&&name&&/span&&span class=&p&&:&/span&&span class=&s2&&&版本类型&&/span&&span class=&p&&,&/span&&span class=&nt&&&options&&/span&&span class=&p&&:[{&/span&&span class=&nt&&&name&&/span&&span class=&p&&:&/span&&span class=&s2&&&中国大陆&&/span&&span class=&p&&,&/span&&span class=&nt&&&value&&/span&&span class=&p&&:&/span&&span class=&s2&&&中国大陆&&/span&&span class=&p&&}]}]},&/span&&span class=&nt&&&skuFull&&/span&&span class=&p&&:&/span&&span class=&kc&&false&/span&&span class=&p&&,&/span&&span class=&nt&&&showPicRadio&&/span&&span class=&p&&:&/span&&span class=&kc&&true&/span&&span class=&p&&,&/span&&span class=&nt&&&isRefundUser&&/span&&span class=&p&&:&/span&&span class=&kc&&true&/span&&span class=&p&&}&/span&&span class=&err&&)&/span&
&/code&&/pre&&/div&&p&最外层是个json_tbc_rate_summary()回调函数,它的参数是个词典,我们词典拿出来,放到python中看起来就比较方便了。&/p&&p&处理结果:&/p&&p&&br&&/p&&img src=&/50/v2-ea0a0bddbd1b4d457a7bf_b.jpg& data-rawwidth=&765& data-rawheight=&117& class=&origin_image zh-lightbox-thumb& width=&765& data-original=&/50/v2-ea0a0bddbd1b4d457a7bf_r.jpg&&&p&&br&&/p&&p&&br&&/p&&img src=&/50/v2-7f3ffe74082fd85ccfddddb_b.jpg& data-rawwidth=&1595& data-rawheight=&769& class=&origin_image zh-lightbox-thumb& width=&1595& data-original=&/50/v2-7f3ffe74082fd85ccfddddb_r.jpg&&&p&&br&&/p&&h2&2.4总结&/h2&&p&这样一来,随便你怎么造,基本的数据你都能获取到了,动态内容你也有了。正则式也有了,随便搞。&b&看到这里,基本可以爬取一些网页了,下面的内容都是在吹牛,不看也罢。&/b&&/p&&p&尽管你都能获取到了,但是效率呢?下面说说怎样高效抓取。&/p&&p&&br&&/p&&h2&3.高效抓取数据(多线程/多进程/分布式爬虫)&/h2&&p&&b&从这儿以后的内容我了解的不深,大部分内容我也在学,权当一起聊聊,说错的地方请及时指出;我尽力说说,重在大家自己的修行。多看书,多学习。&/b&&/p&&h2&3.1多线程爬虫&/h2&&p&以上篇文章《&u&&a href=&/?target=http%3A//zkeeer.space/%3Fp%3D383& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&获取爬虫所需要的代理IP&i class=&icon-external&&&/i&&/a&&/u&》中验证IP可用性来说,当数据库和获取到的数据中有多个IP,假设有1000IP,如果是串行的话,一个个IP去验证,效率非常低了,更何况遇到不能用的还会超时。这里使用多线程,明显提高了效率。&/p&&p&&b&不谈多线程的原理/好处,只说说怎么使用。因为我不会!你来打我呀!&/b&&/p&&p&上篇文章中,验证IP时,将IP全部读入列表。多个线程从列表中获取、验证,然后将可用的IP放入词典(主要为了去重)中。&b&这里只是给大家一个思路,还比如,你设置一个或者多个线程专门抓取网页上的链接然后放在列表中,然后多个线程从列表中取/访问链接,这就涉及到生产者消费者问题了。不多说了,大家应该多学学这里,以后用得着。&/b&&/p&&p&线程数量多少依据电脑性能来定。&/p&&p&这里使用的模块是threadings,具体怎么用,网上的例子比我说得好,万一我跟他想到一块儿去了,说的一样好了,那不就来指控我抄袭?参考廖雪峰老师的教程:&u&&a href=&/?target=https%3A///wiki/958fa6d3a2e542c000/1abbc94eb6fa5d000& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&多线程&i class=&icon-external&&&/i&&/a&&/u&&/p&&p&代码:&u&&a href=&/?target=https%3A///ZKeeer/IPProxy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github&i class=&icon-external&&&/i&&/a&&/u&
多线程的使用在GetIP.py文件中。&/p&&p&逻辑图:&/p&&p&&br&&/p&&img src=&/50/v2-3efbcf707db3_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/50/v2-3efbcf707db3_r.jpg&&&p&&br&&/p&&p&这虽然不是串行,效率提高了好多,但这还不够,我要做你近旁的一株木棉……跑题了,这还不够,并发效率虽然提高了,但是不能有效的利用CPU的多核,经常是1核有难,7核围观。蛋疼的GIL啊。(大家有兴趣可以百度“python 多线程能利用多核吗”)&/p&&p&接下来你需要的是多进程爬虫。多个CPU一起建设社会主义,大步迈入小康社会!&/p&&h2&3.2多进程爬虫&/h2&&p&如果单单是多进程爬虫,执行效率会提高,再加上协程的话,效率会有明显提高。逻辑结构同多线程类似,只不过进程之间通信要使用Queue或者Pipes。&/p&&p&多进程的使用参考&u&&a href=&/?target=https%3A///wiki/095c955c1e6d8bbfac/1155ceb3db1eb469eb06cb43000& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&廖雪峰老师的教程&i class=&icon-external&&&/i&&/a&&/u&&/p&&p&大体结构如下图&/p&&p&&br&&/p&&img src=&/50/v2-c9daee92c1f5_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/50/v2-c9daee92c1f5_r.jpg&&&p&&br&&/p&&p&我把那个获取代理IP改写成多进程版本再发出来。&/p&&h2&3.3分布式爬虫&/h2&&p&当网络带宽、端口资源、IP资源、存储资源满足不了爬虫时,应当适用分布式爬虫,最基本的分布式爬虫结构如下图:&/p&&p&&br&&/p&&img src=&/50/v2-1fcab2c81d0e_b.jpg& data-rawwidth=&1024& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/50/v2-1fcab2c81d0e_r.jpg&&&p&&br&&/p&&p&每一个从机上都可以再使用多进程。&/p&&p&我还没写过分布式。推荐一个Github项目,简单的分布式爬虫,爬取知乎用户:&u&&a href=&/?target=https%3A///WiseDoge/Spider_Hub/tree/master/ZhiHu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ZhiHu Spider based on
Python&i class=&icon-external&&&/i&&/a&&/u&&/p&&h2&3.4总结&/h2&&p&提升效率的方法:串行-&并发-&并行-&分布式。&/p&&p&提升效率了也得注意公德,别给人家服务造成太大压力,适当的sleep。&/p&&p&&br&&/p&&h2&4.持续抓取数据(增量式爬虫)&/h2&&blockquote&&i&是 指 对 已 下 载 网 页 采 取 增 量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。 和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面 ,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。——百度百科&/i&&/blockquote&&p&举例,拿最热的《战狼2》来说,我要实时获取最新的影评,进行一系列操作,但是不抓已经保存的评论,只检测最新的评论然后获取/处理。知乎上的大神们提到增量式爬虫重点在怎么判断是否抓取过,从而避免重复抓取;再一个就是数据去重。&/p&&p&推荐Github项目:&u&&a href=&/?target=https%3A///wxyBUPT/byrSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&byrSpider&i class=&icon-external&&&/i&&/a&&/u&&/p&&p&&br&&/p&&h2&5.爬虫和反爬虫和反反爬虫&/h2&&p&爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),是一场精彩绝伦的战争,你方唱罢我登场。&/p&&h2&5.1动态加载&/h2&&p&关于动态加载,一种是前面在提到的提取动态内容,方法差不多。另外可以使用selenium/phantomjs提取啊。&/p&&p&因为爬虫不会执行js代码进行渲染,有的可能会使用js代码与服务器通信,回传一定的数据,若是爬虫,这段js代码便不会执行,可以封IP了;或者给你假数据,投毒。&/p&&p&还遇到过,抓取代理IP时,某个网站需要调用API来checkuser,只需要调用,哪怕check失败了;如果不调用的话,就得不到数据。这就跟上面差不多。&/p&&p&这时候用必要使用selenium/phantomjs了,但是会大大降低效率。&/p&&p&还想到的其他反爬虫策略也有改动页面结构。&/p&&h2&5.2验证码&/h2&&p&当网站判断你是个爬虫时,经常会跳出几个验证码来打断你……的腿。处理验证码,常用的方法有:&/p&&p&1.频率不高,数据量不大时,可以手动输入&/p&&p&2.频率高,数据量大,考虑接入打码平台。你们知道吗,这叫服务,&b&得花钱!&/b&&/p&&p&3.当以上行不通时,自己写程序识别验证码啊。我会说我本科毕设做的就是基于深度神经网络的验证码识别吗?会!由于做的不成熟,就不拿出来现眼了。验证码识别在知乎和GitHub上都有相关的项目,可以参考做一下。&/p&&p&4.还有哪些非传统的验证码,例如12306的选择图片、滑块验证、记录鼠标轨迹和点击等等。12306那个可以调用谷歌或者百度的识图API,滑块和鼠标轨迹之类的得借助phantomjs。等我学会了我再讲出来。这里会耗费精力很大。多多sleep会在很大程度上避免验证码。&/p&&h2&5.3登录&/h2&&p&还在学习这个,懂得不多,不吹牛皮,推荐Github项目:&u&&a href=&/?target=https%3A///xchaoinfo/fuck-login& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&模拟登录一些知名的网站,为了方便爬取需要登录的网站&i class=&icon-external&&&/i&&/a&&/u&&/p&&img src=&/50/v2-5e34e9ec4facb2d7083c_b.jpg& data-rawwidth=&721& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&721& data-original=&/50/v2-5e34e9ec4facb2d7083c_r.jpg&&&p&&br&&/p&&p&&br&&/p&&h2&5.4cookie&/h2&&p&大多数不是真心想要反爬虫的网站,或者保护重要数据,不会查你的cookie。推荐几篇关于cookie的文章,别的以后想起来再补充。&/p&&p&&u&&a href=&/p/& class=&internal&&Find Hao——python爬虫学习(四)获取cookie&/a&&/u&&/p&&p&&u&&a href=&/p/& class=&internal&&州的先生——Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接&/a&&/u&&/p&&p&&u&&a href=&/p/& class=&internal&&Jerry——Python爬虫—破解JS加密的Cookie&/a&&/u&&/p&&h2&5.5总结&/h2&&p&其实绕过这些反爬虫手段才是王道,正面刚得费多少精力。间隔时间大一点儿,并发量小一点儿,不给人家服务器造成压力,人家才不会盯上你。出来混都不容易,谁还不是个宝宝。&/p&&h2&6.推荐&/h2&&p&1.有能力的去阅读Scrapy源码&/p&&p&2.推荐书目:《HTTP权威指南》《用python写网络爬虫》,前端方面我是小白,就知道本《CSS权威指南》求大家推荐基础的前端书籍。&/p&&p&3.python相关的: &a class=&member_mention& href=&/people/eaf435b228ce0b038a4afe& data-hash=&eaf435b228ce0b038a4afe& data-hovercard=&p$b$eaf435b228ce0b038a4afe&&@路人甲&/a& 大神的&u&&a href=&/p/& class=&internal&&python总结&/a&&/u&,还有知乎上好多python大牛,多多关注他们&/p&&p&4.我这儿还有一些python的电子书,包括网上的和我自己买的,都贡献出来&/p&&img src=&/50/v2-6e61ea200b0ca395b672fc3b41bbc3c8_b.jpg& data-rawwidth=&1325& data-rawheight=&671& class=&origin_image zh-lightbox-thumb& width=&1325& data-original=&/50/v2-6e61ea200b0ca395b672fc3b41bbc3c8_r.jpg&&&p&&br&&/p&&p&链接:&a href=&/?target=http%3A///s/1skEQeTZ& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/s/1skEQeT&/span&&span class=&invisible&&Z&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 密码:gi91&/p&&p&5.正则表达式相关的,我倒是经常看见这个大哥(&u&&a href=&/people/huang-xi-gua-12/answers& class=&internal&&国服第一奇葩辅助&/a&&/u&)回答&/p&&p&&/p&
本文首发: 代码基于 python3.5 多图预警,长文预警 知识点很多,适合小白,大神绕路 文章不详细的地方,以后会补充。 欢迎署名和不署名转载目录: 1.获取数据爬虫,就是要千方百计地装成浏览器从网站骗数据。——我说的…
&img src=&/50/v2-4e62cf9a220_b.jpg& data-rawwidth=&1024& data-rawheight=&714& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/50/v2-4e62cf9a220_r.jpg&&&p&&b&作者:stormzhang&/b&&/p&&p&&b&来源:微信公众号 stormzhang&/b&&/p&&p&&b&更多精彩文章,关注专栏:&/b&&a href=&/passer& class=&internal&&学习编程 - 知乎专栏&/a&&/p&&p&&br&&/p&&p&看完昨天的文章「&a href=&/?target=http%3A//mp./s%3F__biz%3DMzA4NTQwNDcyMA%3D%3D%26mid%3D%26idx%3D1%26sn%3D9aceac07d272e4f857a5ff%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&从0开始学习 GitHub 系列之「初识 GitHub」&i class=&icon-external&&&/i&&/a&」估计不少人已经开始期待我继续更新了,这不赶紧马不停蹄,加班加点给你们更新了第二篇。在更新本篇文章之前先回答昨天大家留言的两个问题:
&/p&&p&&b&GitHub 需要翻墙么?&/b&&/p&&p&印象中 GitHub 之前确实总是断断续续的访问不了,不过在13年初的时候有段时间最严重,一度被封了,当时李开复老师再也忍无可忍,公开发了一条抗议 GitHub 被封的微博,这事我印象很深,因为我是12年底加入的 GitHub ,那时候简直像遇到世外桃源一般,但是也深受老是访问不了的困扰,很多人早就对这件事怨声载道了,加上李开复老师的声讨,这一下就炸开了锅,微博上纷纷转发谴责,算的上是整个IT界的大新闻,后来因为这事影响太大了,没过几天 GitHub 就可以正常访问了,这里真的要感谢李开复老师敢于站出来的勇气,可以这么说,如果没有 GitHub ,中国的编程水平起码要倒退好多年!&/p&&p&&br&&/p&&p&因为 GitHub 的影响力太大,基本上是各种黑客攻击的对象,所以现在偶尔也会有宕机访问不了的情况,但是好在不会被封,所以大家不用担心,访问 GitHub 不用翻墙,只是可能访问速度稍慢些,另外为了维护一个和谐的环境,这里也呼吁大家不要在 GitHub 上发表任何关于政治的言论与文章,在 GitHub 上我们只是单纯的技术交流,无关政治,在复杂的大环境下,希望 GitHub 永远是我们程序员的一片净土!&/p&&p&&br&&/p&&p&&b&英语差、0基础学得会么?&/b&&/p&&p&这个也是不少人问我的,GitHub 虽然都是英文,但是对英语水平的要求不是那么高,都是些简单的单词,遇到不会的查一下就行了,你觉得很难只是你对英文网站反射性的抵触而已,相信我,跟着我的详细教程,我的文章面向从没有接触过甚至没有听过 GitHub 的同学,一步步教你由浅入深。如果你学不会,那么来打我,不过我这么帅,你也不忍心!&/p&&p&&br&&/p&&p&好了,废话不多说,咱们进入正文!&/p&&p&&br&&/p&&h2&&b&1. 注册 GitHub&/b&&/h2&&p&&b&先去 GitHub 官网「&a href=&/?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How people build software · GitHub&i class=&icon-external&&&/i&&/a&」注册「Sign Up」个账号,注册页面如下:&/b&&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/575f663f8e7843f9bcd48d65c49f17b4_b.png& data-rawwidth=&640& data-rawheight=&539& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/575f663f8e7843f9bcd48d65c49f17b4_r.png&&&p&&br&&/p&&p&这个应该没啥说的,需要填用户名、邮箱、密码,值得一提的用户名请不要那么随便,最好取的这个名字就是你以后常用的用户名了,也强烈建议你各大社交账号都用一样的用户名,这样识别度较高,比如我的博客域名、GitHub、知乎等其他社交账号 ID 都是 stormzhang ,微博是因为被占用了,无奈换了个id,而且这个用户名以后在 GitHub 搭建博客的时候默认给你生成的博客地址就是 &a href=&/?target=http%3A//username.github.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&username.github.io&i class=&icon-external&&&/i&&/a& ,所以给自己取个好点的用户名吧。&/p&&p&&br&&/p&&p&&b&填好用户名、邮箱、密码紧接着到这一步:&/b& &/p&&p&&br&&/p&&p&&br&&/p&&img src=&/b2aefa60ae2b762fc4c508ca78f63243_b.png& data-rawwidth=&640& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/b2aefa60ae2b762fc4c508ca78f63243_r.png&&&p&&br&&/p&&p&这个是什么意思呢?GitHub 有两种,一种是公开,这种是免费的,就是你创建的项目是开放的,所有人都能看得到;另一种是私有,这种是收费的,这种一般是很多企业在使用 GitHub 的私有仓库在托管自己的项目,这也是 GitHub 的一种盈利模式对于个人你就直接默认选择公开的就行了。&/p&&p&&br&&/p&&h2&&b&2. 认识 GitHub&/b&&/h2&&p&注册成功之后你会到 GitHub 的主页面来:&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/7afaead74d4a7c3a25f018a02159e8ac_b.png& data-rawwidth=&640& data-rawheight=&290& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/7afaead74d4a7c3a25f018a02159e8ac_r.png&&&p&你如果是新注册的可能看到的跟我不一样,因为你们新用户,没有自己的项目,没有关注的人,所以只有一个导航栏。&/p&&p&&br&&/p&&ul&&li&导航栏,从左到右依次是 GitHub 主页按钮、搜索框、PR、Issues、Gist(这些概念后面会讲的)、消息提醒、创建项目按钮、我的账号相关。&/li&&/ul&&p&&br&&/p&&ul&&li&我的 Timeline,这部分你可以理解成微博,就是你关注的一些人的活动会出现在这里,比如如果你们关注我了,那么以后我 star、fork 了某些项目就会出现在你的时间线里。&/li&&/ul&&p&&br&&/p&&ul&&li&我的项目,这部分就不用说了,如果你创建了项目,就里就可以快捷访问。&/li&&/ul&&p&&br&&/p&&p&&br&&/p&&h2&&b&3. GitHub 主页&/b&&/h2&&p&点击下图的 Your profile 菜单进入到你的个人 GitHub 主页。&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/816e66b3be1c9ff674ca8667d4dfe8ff_b.png& data-rawwidth=&640& data-rawheight=&273& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/816e66b3be1c9ff674ca8667d4dfe8ff_r.png&&&p&&br&&/p&&p&还是以我的 GitHub 主页为例:&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/40ec1a172c5cdb7f8dc261a8_b.png& data-rawwidth=&640& data-rawheight=&359& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/40ec1a172c5cdb7f8dc261a8_r.png&&&p&&br&&/p&&p&这么详细应该不会看不懂吧?只不过你的账号可能没有这么丰富,因为你可能啥也没做过,但是如果做全了基本上就会看到跟我一样的了。&/p&&p&&br&&/p&&h2&&b&4. 设置你的 GitHub&/b&&/h2&&p&如果你是新注册的 GitHub 账号,是不是觉得很简陋?虽然你没有自己的项目,但是第一步起码要先完善自己的信息,点击如下的 Settings 菜单:&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/bace4500dd_b.png& data-rawwidth=&640& data-rawheight=&245& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/bace4500dd_r.png&&&p&&br&&/p&&p&到设置页面来设置一些基本信息:&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/c3f5e5d02c8db15324ce_b.png& data-rawwidth=&640& data-rawheight=&414& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/c3f5e5d02c8db15324ce_r.png&&&p&&br&&/p&&p&像头像、Name 建议要设置一个常用的,这两个很有识别性,公开的邮箱也要设置一个,这样那些企业啊、猎头啊就通过这个公开邮箱去联系你,友情提醒:别在 GitHub 把自己的 QQ 邮箱放上去,不显得太 low 了么?没有 gmail 邮箱,起码也得注册个 foxmail、163 邮箱之类的吧。&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&5. GitHub 基本概念&/b&&/h2&&p&上面认识了 GitHub 的基本面貌之后,你需要了解一些 GitHub 的基本概念,这些概念是你经常会接触并遇到的。&/p&&p&&br&&/p&&p&&b&Repository&/b&&/p&&p&仓库的意思,即你的项目,你想在 GitHub 上开源一个项目,那就必须要新建一个 Repository ,如果你开源的项目多了,你就拥有了多个 Repositories 。&/p&&p&&br&&/p&&p&&b&Issue&/b& &/p&&p&问题的意思,举个例子,就是你开源了一个项目,别人发现你的项目中有bug,或者哪些地方做的不够好,他就可以给你提个 Issue ,即问题,提的问题多了,也就是 Issues ,然后你看到了这些问题就可以去逐个修复,修复ok了就可以一个个的 Close 掉。
&/p&&p&&br&&/p&&p&&b&Star&/b&&/p&&p&这个好理解,就是给项目点赞,但是在 GitHub 上的点赞远比微博、知乎点赞难的多,如果你有一个项目获得100个star都算很不容易了!&/p&&p&&br&&/p&&p&&b&Fork&/b&&/p&&p&这个不好翻译,如果实在要翻译我把他翻译成分叉,什么意思呢?你开源了一个项目,别人想在你这个项目的基础上做些改进,然后应用到自己的项目中,这个时候他就可以 Fork 你的项目,这个时候他的 GitHub 主页上就多了一个项目,只不过这个项目是基于你的项目基础(本质上是在原有项目的基础上新建了一个分支,分支的概念后面会在讲解Git的时候说到),他就可以随心所欲的去改进,但是丝毫不会影响原有项目的代码与结构。&/p&&p&&br&&/p&&p&&b&Pull Request&/b&&/p&&p&发起请求,这个其实是基于 Fork 的,还是上面那个例子,如果别人在你基础上做了改进,后来觉得改进的很不错,应该要把这些改进让更多的人收益,于是就想把自己的改进合并到原有项目里,这个时候他就可以发起一个 Pull Request(简称PR) ,原有项目创建人,也就是你,就可以收到这个请求,这个时候你会仔细review他的代码,并且测试觉得OK了,就会接受他的PR,这个时候他做的改进原有项目就会拥有了。&/p&&p&&br&&/p&&p&&b&Watch&/b&&/p&&p&这个也好理解就是观察,如果你 Watch 了某个项目,那么以后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。&/p&&p&&br&&/p&&p&&b&Gist&/b&&/p&&p&有些时候你没有项目可以开源,只是单纯的想分享一些代码片段,那这个时候 Gist 就派上用场了!&/p&&p&&br&&/p&&h2&&b&6. 创建自己的项目&/b&&/h2&&p&点击顶部导航栏的 + 可以快速创建一个项目,如下图:&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/f1a7ac4df9e23f016de402_b.png& data-rawwidth=&640& data-rawheight=&380& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/f1a7ac4df9e23f016de402_r.png&&&p&&br&&/p&&p&创建一个项目需要填写如上的几部分:项目名、项目描述与简单的介绍,你不付费没法选择私有的,所以接着只能选择 public 的,之后勾选「Initialize this repository with a README」,这样你就拥有了你的第一个 GitHub 项目:&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/08bfdabfdd584_b.png& data-rawwidth=&640& data-rawheight=&361& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/08bfdabfdd584_r.png&&&p&&br&&/p&&p&可以看到这个项目只包含了一个 &a href=&/?target=http%3A//readme.md/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&README.md&i class=&icon-external&&&/i&&/a& 文件,但是它已经是一个完整的 Git 仓库了,你可以通过对它进行一些操作,如watch、star、fork,还可以 clone 或者下载下来。&/p&&p&&br&&/p&&p&这里提一下 &a href=&/?target=http%3A//readme.md/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&README.md&i class=&icon-external&&&/i&&/a& ,GitHub 上所有关于项目的详细介绍以及 Wiki 都是基于 Markdown 的,甚至之后在 GitHub 上搭建博客,写博客也是如此,所以如果还不懂 Markdown 语法的,建议先去学习下。推荐一篇学习 Markdown 的文章给你们:&/p&&p&&br&&/p&&p&&a href=&/?target=http%3A///p/q81RER& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&献给写作者的 Markdown 新手指南&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&h2&&b&7. 总结&/b&&/h2&&p&相信看完以上文章你已经基本算是了解 GitHub 的基本概念并且正式加入 GitHub 这个大家庭了,之后会有更深入的文章介绍 Git、介绍对项目的常用操作、介绍如何给开源项目提交代码、介绍如何协同合作甚至怎么搭建博客等,敬请期待吧!&/p&&p&&/p&
作者:stormzhang来源:微信公众号 stormzhang更多精彩文章,关注专栏: 看完昨天的文章「」估计不少人已经开始期待我继续更新了,这不赶紧马不停蹄,加班加点给你们更新了第二篇。在更新本篇…
&img src=&/50/v2-1a9c65dcfe935fcfa0a95_b.jpg& data-rawwidth=&900& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/50/v2-1a9c65dcfe935fcfa0a95_r.jpg&&&p&&b&开始的话:&/b&文章是实验楼投稿文章,文章有大量的Python项目,所以对Python感兴趣的可以看看。&/p&&p&---------------------------------------------&/p&&p&&b&前言:&/b&&/p&&p&不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行。&/p&&p&这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去做自己的项目。&/p&&p&&b&70个Python项目列表:&/b&&/p&&p&1、&a href=&/?target=https%3A///courses/370& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 图片转字符画】&i class=&icon-external&&&/i&&/a&&/p&&p&2、&a href=&/?target=https%3A///courses/368& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【200行Python代码实现2048】&i class=&icon-external&&&/i&&/a&&/p&&p&3、&a href=&/?target=https%3A///courses/623& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python3 实现火车票查询工具】&i class=&icon-external&&&/i&&/a&&/p&&p&4、&a href=&/?target=https%3A///courses/599& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【高德API+Python解决租房问题 】&i class=&icon-external&&&/i&&/a&&/p&&p&5、&a href=&/?target=https%3A///courses/589& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python3 色情图片识别】&i class=&icon-external&&&/i&&/a&&/p&&p&6、&a href=&/?target=https%3A///courses/364& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 破解验证码】&i class=&icon-external&&&/i&&/a&&/p&&p&7、&a href=&/?target=https%3A///courses/552& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python实现简单的Web服务器】&i class=&icon-external&&&/i&&/a&&/p&&p&8、&a href=&/?target=https%3A///courses/49& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【pygame开发打飞机游戏】&i class=&icon-external&&&/i&&/a&&/p&&p&9、&a href=&/?target=https%3A///courses/487& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Django 搭建简易博客】&i class=&icon-external&&&/i&&/a&&/p&&p&10、&a href=&/?target=https%3A///courses/677& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python基于共现提取《釜山行》人物关系】&i class=&icon-external&&&/i&&/a&&/p&&p&11、&a href=&/?target=https%3A///courses/142& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【基于scrapy爬虫的天气数据采集(python)】&i class=&icon-external&&&/i&&/a&&/p&&p&12、&a href=&/?target=https%3A///courses/31& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Flask 开发轻博客】&i class=&icon-external&&&/i&&/a&&/p&&p&13、&a href=&/?target=https%3A///courses/651& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python3 图片隐写术】&i class=&icon-external&&&/i&&/a&&/p&&p&14、&a href=&/?target=https%3A///courses/647& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 实现简易 Shell】&i class=&icon-external&&&/i&&/a&&/p&&p&15、&a href=&/?target=https%3A///courses/729& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【使用 Python 解数学方程】&i class=&icon-external&&&/i&&/a&&/p&&p&16、&a href=&/?target=https%3A///courses/705& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【PyQt 实现简易浏览器】&i class=&icon-external&&&/i&&/a&&/p&&p&17、&a href=&/?target=https%3A///courses/593& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【神经网络实现手写字符识别系统 】&i class=&icon-external&&&/i&&/a&&/p&&p&18、&a href=&/?target=https%3A///courses/674& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 实现简单画板】&i class=&icon-external&&&/i&&/a&&/p&&p&19、&a href=&/?target=https%3A///courses/561& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python实现3D建模工具】&i class=&icon-external&&&/i&&/a&&/p&&p&20、&a href=&/?target=https%3A///courses/782& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【NBA常规赛结果预测——利用Python进行比赛数据分析】&i class=&icon-external&&&/i&&/a&&/p&&p&21、&a href=&/?target=https%3A///courses/707& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【神经网络实现人脸识别任务】&i class=&icon-external&&&/i&&/a&&/p&&p&22、&a href=&/?target=https%3A///courses/70& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python文本解析器】&i class=&icon-external&&&/i&&/a&&/p&&p&23、&a href=&/?target=https%3A///courses/637& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python3 & OpenCV 视频转字符动画】&i class=&icon-external&&&/i&&/a&&/p&&p&24、&a href=&/?target=https%3A///courses/595& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python3 实现淘女郎照片爬虫 】&i class=&icon-external&&&/i&&/a&&/p&&p&25、&a href=&/?target=https%3A///courses/725& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python3实现简单的FTP认证服务器】&i class=&icon-external&&&/i&&/a&&/p&&p&26、&a href=&/?target=https%3A///courses/633& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【基于 Flask 与 MySQL 实现番剧推荐系统】&i class=&icon-external&&&/i&&/a&&/p&&p&27、&a href=&/?target=https%3A///courses/495& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 实现端口扫描器】&i class=&icon-external&&&/i&&/a&&/p&&p&28、&a href=&/?target=https%3A///courses/580& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【使用 Python 3 编写系列实用脚本】&i class=&icon-external&&&/i&&/a&&/p&&p&29、&a href=&/?target=https%3A///courses/769& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 实现康威生命游戏】&i class=&icon-external&&&/i&&/a&&/p&&p&30、&a href=&/?target=https%3A///courses/686& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【川普撞脸希拉里(基于 OpenCV 的面部特征交换) 】&i class=&icon-external&&&/i&&/a&&/p&&p&31、&a href=&/?target=https%3A///courses/708& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 3 实现 Markdown 解析器】&i class=&icon-external&&&/i&&/a&&/p&&p&32、&a href=&/?target=https%3A///courses/780& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 气象数据分析 -- 《Python 数据分析实战》】&i class=&icon-external&&&/i&&/a&&/p&&p&33、&a href=&/?target=https%3A///courses/614& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python实现键值数据库】&i class=&icon-external&&&/i&&/a&&/p&&p&34、&a href=&/?target=https%3A///courses/777& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【k-近邻算法实现手写数字识别系统】&i class=&icon-external&&&/i&&/a&&/p&&p&35、&a href=&/?target=https%3A///courses/714& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【ebay在线拍卖数据分析】&i class=&icon-external&&&/i&&/a&&/p&&p&36、&a href=&/?target=https%3A///courses/741& class=& wrap external& target=&_bl}

我要回帖

更多关于 hold是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信