看人家怎么踩坑的啦,游戏运营的装逼技巧の不

热血传奇: 花了两千万, 盛大曾为他修复bug, 人民币玩家有多疯狂
“不要拿你的年薪来挑战我的零花钱”,这句话是出自《热血传奇》超级人民币玩家“8l”之口。
现在,我以一个骨灰级玩家的身份向你们介绍一下这个游戏有多烧钱,以及如何烧钱。都说贫穷限制了我们的想象力,我不知道你们是如何体会到这句话的,对我来说,我玩《传奇》这个游戏就足够每天体会个三五次了,直至现在早已完全麻木。
既然胆敢自称骨灰级玩家,那我肯定比普通玩家更了解这款游戏,也经历得更多,自01年底一直到现在,几乎没间断过,至少每个月都上线,甚至我有能力靠这个游戏挣点零花钱。我亲身见证了01至04年《热血传奇》的黄金时期,那时候你随便走进一家网吧,没有八成以上玩家在打《热血传奇》算我输,“少女用第一次换技能书”、“中学生连续玩游戏60小时猝死网吧”、“不吃不睡不顾家,青年为玩《热血传奇》妻离子散”等新闻都发生在此期间。此后,外有私服横行、外挂泛滥、其他网游的冲击,内有官方幻境地图、金刚石系统、“闯天关”活动、魔王岭射猪等专门为圈钱而来的版本更新,内忧外患下玩家开始大量流失。05年底,盛大宣布《热血传奇》永久免费,同时也基本上宣布了这个游戏的死刑,留下来继续支持《热血传奇》的玩家千不足一,从此,《热血传奇》彻底走下了神坛。
好了,背景交代完毕。自从盛大宣布《热血传奇》永久免费后,《热血传奇》成了大款们的天堂,只要你有钱,没有你办不到的事。身为屌丝但又一直放不下这个游戏的我半死不活地生存在这个游戏中的玛珐大陆上,建树全无,但也有幸目睹了众多土豪一掷千金的场景,让我早早意识到我们国家有那么多有钱人,也不枉混迹在《热血传奇》世界中近十七年。
1、等级碾压——《热血传奇》中的传奇人物“8l”的传说
llllllll1(8个小写字母l后面加个数字1),江湖人称“8l”,来自《热血传奇》十区。08年之后,玩《热血传奇》的人不认识8l,比02、03年不认识“魂十五”、“太子丹”、“小虾米”此类风流人物的概率低得多。因为在后期,8l就是神一样的存在,没错,神也是人,只不过他做了人做不到的事,所以他是神
8l是凭一己之力改变《热血传奇》整个游戏进程的存在,因为他,盛大数次修改游戏数据,数次专门为他打补丁;8l是那种“能用钱解决的问题咱们就别BB”的存在,等级必须碾压所有《热血传奇》玩家,管你哪区哪服;8l是《热血传奇》史上唯一一个一人一刀攻城成功的存在,我就站在这里不还手,能打死我是你们的本事;8l是在09年前后就花费2000W左右用于玩《热血传奇》的存在(具体花了多少存在争议,但通过众多资深玩家推算,2000W应该是比较接近的数字),想想差不多十年前这个数目是什么概念……
但凡玩过《热血传奇》的人都应该知道里面人物等级的提升有多难,我还清楚记得02年的时候,卡在34级的我为了最快速度达到35级,好拿起当时的终极装逼神器“骨玉权杖”,我泡在网吧不休不眠、不吃不喝足足53个小时,可惜依然未能升级成功。而随着等级的提升,所需要的经验值就越多,60级以后每升一级所需的经验值那根本就是个天文数字,单靠打怪的话起码要几年时间才能升一级,还要24小时不停打怪那种。但请别担心,只要你有钱,我们亲爱的盛大网络公司助你轻松升级,“不怕你等级高,就怕你钱不够”。
8l听闻此言,嘴角微微翘起一个弧度,呵呵,是么?那我开始表演了,请大家带上小板凳,排好队,包括你们,GM号,记住,观看我的演出,所有人请保持安静,你们能做的只有鼓掌和喝彩,别妄图挑战我的地位。
由此,神迹之旅开启了,这是一场人民币的狂欢:
1、在大部分玩家还苦苦挣扎在60级以下的阶段,屌丝玩家感叹升级太费精力、半人民币玩家感叹升级太费钱,都表示玩不下去了。8l一语不发,撸起袖子就是干,也没升多高级,254级而已,因当时《传奇》封顶等级为255级,在8l冲255级当天,专门前来见证历史性时刻的《传奇》玩家将服务器挤爆。8l顺利冲破255级,因数据溢出直接变了0级。不是“不怕你等级高,就怕你钱不够”吗?请盛大官方出来解释一下,盛大GM团队对此问题进行了紧急处理,为“财神爷”打上补丁调好级别,顺便将等级封顶提至520级。8l很不爽,才提高这几级,不是看不起我嘛,走你!转眼520级了,再一次突破了等级限制。GM团队又出现了,轻车熟路,打补丁,调对级别,提高级别限制,更新游戏。此时还是09年初,8l累计花费已超500W(下面有当时腾讯新闻截图为证)。
2、是时候检验一下级别碾压的威力了。于是,在一个月黑风高的夜晚,8l一个人提着刀来到沙城,将里面几个正在嗑瓜子的妹子一刀一个解决掉,占领了沙城。沙老大立即带领全行会人马反扑回来,进入皇宫后发现只有一个人站在里面,本以为可轻松打发掉,但对面的家伙根本连正眼也不给他们一个,吃着火锅唱着歌,隐约听到歌词好像是“不用麻烦了,你们一起上,我在赶时间”之类的。之后的事实也证明,此人的确很变态,站着不还手随便你们攻击,凭着超高血量、超高防御和复活戒指撑到攻城结束,创造了一人正面攻城成功的历史,史称“外星人攻城事件”。
此事过后,8l 名气更盛,声名远播,在各大论坛都是焦点人物。但他表示,革命尚未成功,我仍需继续发扬艰苦奋斗的作风,于是开始以每天15、20级的速度向999级发起了冲刺。不要问为什么只能每天升15或者20级,这已是当时用钱所能达到的极限升级速度。很快,999级出来了,几十万的血量,自身攻击力都近300,对比此时大多数玩家停留在100级以下,8l有点高处不胜寒的感觉:这就完啦?我好像还没花什么钱的样子。大声告诉我,谁是《传奇》第一人!
3、这个世界有钱人肯定不止8l一个,在8l冲刺999级期间,隔壁十二区也出了个疯狂的女土豪——あ伊人风采あ,单看名字就有“你8l有你8l的风光,我伊人有我伊人的风采”的意味。伊人风采同样用钱把等级砸到了500多级,一时间在各大论坛上声名鹊起,加上其身为美女玩家的加持,论坛上一众屌丝高呼其为“传奇女皇”,颇有和8l分庭抗礼的味道。8l一看乐了,正愁找不到目标发泄呢,说好了装B只有我一个人装的份,其他人只能站在一边鼓掌喝彩的嘛,竟然有人敢不遵守游戏规则,妄图挑战哥的江湖老大地位。于是,8l表示,妹子放学别走,哥要过去修理你。
很快,8l 兴冲冲地来到了十二区,创建了一个名曰“霸世メ遇神杀神”的角色,最快速度升到600多级,点名要干掉伊人风采,毫无怜香惜玉的觉悟。可惜伊人风采也不是省油的灯,人家同样是顶级装备,虽然低了100级但也能扛住,况且伊人还有一群小弟帮忙,8l没能占到什么便宜。点子扎手,风紧扯乎?非也,8l大怒,你有帮手了不起?我也有!于是又创建了一堆名字以“霸世”开头的小号,全部练到200至400级,再专门聘请代练过来帮忙打架,目标明确:凡是碰到伊人风采本人及其行会成员,一律要干死。
伊人风采欲哭无泪,玩个《传奇》还遇见个疯子了,我升到500多级得罪了谁?竟然遭到了跨区追杀,我也很无辜的啊。就这样,8l以铁腕手段和深不可测的财力巩固了自己《传奇》第一人的地位,从此再也没有人可以撼动。
4、老子有的是钱,一天不花我就不舒服。于是8l继续砸钱练小号,两三年时间又练了十多个999级的小号(果然是小号)。盛大彻底无语,这样下去,游戏都没法运营了,于是,继内功后,心法等比等级更烧钱的系统先后出现了。
内功999级、心法100级(已是当时满级),8l又是全区全服第一个达到此级别的人,才不管你更新了什么,反正我一律要达到升无可升的最高境界。盛大再次提升心法等级至150级,8l直接无视,用钱砸!三天,又满级了。
5、天下第一战来了,这是整个《传奇》的盛事,一百多个区,几百组服务器大PK,扬名立万的机会到了。8l摩拳擦掌,迅速组织起行会骨干投入战斗,剑指全区全服第一。然而,比赛结果却令人大跌眼镜,8l的行会竟然没有进入前八。事后据战地记者报道,原来8l以自己一个行会之力硬撼对方全区全服大联盟,其本人不屑和任何行会建立联盟关系,誓死不低头。蚁多咬死象,结果就可想而知了。
这个结果直接导致8l对游戏失去了兴趣,从此告别了《传奇》,淡出了《传奇》玩家的视野
6、一年后,8l再次上线,在他上线的那一刻,整个《传奇》沸腾了。在人们的各种猜测声中,8l以每天消费过百万的速度补上自己落下的各项游戏数据,几天时间又回复了满级状态。盛大见此,马上将心法等级开放至255级。如此小坑,能坑得了财大气粗的8l?仅仅两天时间,在各大论坛的直播下,8l顺利达到了255级,论坛上叫好声一片。
就在我写下此回答的今天,我又过十区瞻仰了一下8l的风采,现在他是,还是满级,还是那么无敌,还是那么不可撼动。
7、“不要拿你的年薪来挑战我的零花钱”,此言一出,霸气侧漏,迅速成为了网络上的流行语言,并且你还不能不服气,因为说出这句话的是当年网游第一人8l。即使现在有在其他游戏上消费超过8l的人,但在大部分《传奇》玩家的心里,8l就是不可超越的存在。有钱,就是这么任性,他就是传奇中的传奇。
而且,8l也是早期的游戏玩家,在02、03年就已经是等级和装备都处于最顶端的那一小撮人,现在网络上依然能搜得到当时的截图。并且他不是游戏内部人员(俗称托)已是公认的事实,身后有一整个GM团队围着他转,专门为他服务。有一段时间,游戏里有个NPC就是以他的名字命名的,盛大还帮8l的公司打过广告。
以下是8l大神的爱人及全家福,图片是他的FANS在他博客上截下来发到论坛上的,可信程度极高。
下面这条新闻是当时8l累计花费超过500W后腾讯新闻的报道截图
2、装备竞赛——一件天龙圣衣引发的血案
8l 和伊人风采、火舞者、难得糊涂这几位都是《传奇》中比较知名的人民币玩家,也是天神级别的存在,投入的钱财是我等普通老百姓一辈子也不敢想象的天文数字。除了以上几位超级人民币玩家,《传奇》中还有大量财力稍弱的土豪,比如下面即将出场的两位。
在08年前后,盛大对新推出的顶级装备都采取竞拍形式,规定一定时间内在游戏中消费最多的玩家获得新装备。为刺激消费,盛大在土城安全区新增了一个NPC,全部玩家都可以通过点击NPC查看祝福点(1元宝=1祝福点=1.1元人民币)最新战绩,名次、角色名字、消费金额在上面不断刷新,土豪们烧钱烧得痛快,其他玩家看拍卖大会看得过瘾。
在上一次的祝福点争夺战中,三区第一人马燕飞以12万祝福点的成绩顺利将战利品天龙圣剑收入囊中,此区第二人复仇王很不服,早早放出了风声,表示对此次祝福点活动的奖品天龙圣衣志在必得,顺便奉劝一切牛鬼蛇神速速回避,否则浪费了白花花的银子怨不得别人。
好戏开始了,复仇王人如其名,自此轮祝福点活动开始后就一马当先早早确立了领先优势,马燕飞不甘人后,紧紧咬住前面的复仇王。于是两人你一万我两万,你三万我四万地疯狂烧钱,在前6天的时间里双方都突破了30W大关,复仇王暂列第一,但优势并不大,只领先几千祝福点,随时有被翻盘的可能。
终于,高潮在08年10月初的一天晚上到来了。这一晚,是此轮祝福点活动的截止日期;这一晚,三区所有玩家全部站在安全区,什么打怪、买卖、PK、行会活动一律暂停;这一晚,数以千计的其他区玩家慕名而来,创建小号跑到安全区静静观看演出;这一晚,服务器近乎瘫痪。
离12点还有四个小时,两大土豪的竞争也进入了白热化阶段,怎么烧钱快就怎么来,购买贵重物品、直接放烟花等方式无所不用其极,NPC上的数据以每分钟超千点的速度不断刷新:52万比50万, 57.4万比57万,61.7万比60.9万,67.1万比65.7万……
11点,复仇王祝福点以69.7万领先马燕飞的67.6万,马燕飞出现了后劲不足的趋势,祝福点增长速度开始放缓。复仇王丝毫不敢放松,始终保持领先一万以上的优势,严防死守,决不允许出现最后几分钟被翻盘的狗血事件。在其他玩家的喝彩声中,时间一分又一分地过去了,终于,十二点整,复仇王以71.6万的成绩力压马燕飞的68.8万,成功夺得了奖品天龙圣衣。
70多万一件的衣服,在现实中恐怕也算天价了吧,在游戏中只不过是个虚拟的数据罢了,并且这个数据可能在几个月之后的更新中变得一文不值。但很多土豪还真不缺这些钱,开心就好,B也装到了,虚荣心也得到满足了,实力也增强了,这就够了,在那几年,其他区服的祝福点争夺战一般没以上两位老板那么气势磅礴,但投入超六位数人民币竞争一件装备是普遍现象,可想而知土豪们的烧钱行动有多疯狂,要知道,当时的《传奇》早就有100多个区几百组服务器了,我恨不能成为盛大的股东。
3、意气之争——令人眼花缭乱的蛋糕大战
如果说祝福点争夺活动起码有装备作为奖励,土豪们一掷千金的举动也能令人理解,但以下这种毫无意义的烧钱方式就只剩下赤裸裸的炫富行为和意气之争了。
在《传奇》出现烟花(玩家一般称其为蛋糕)之前,盛大先更新了道具“千里传音”,角色佩戴后添加特殊命令发出的文字全服可见,作用等同于其他网游的大喇叭。这个道具的出现为一般玩家的买卖装备提供了便利,但很快就有些伪土豪通过刷喇叭来斗气,比方说你刷一句我刷一句,看谁坚持的时间长,还不忘在每句话最后面加上数字,以显示自己刷了几个字,仿佛很了不起的样子。
实话说,这种炫富方式真的很低端,刷一次“千里传音”只不过五毛钱,一个小时刷个1000多次都能把人累死了,但花费也不过几百块钱罢了,我这种层次的屌丝也能承受得起,真正的土豪根本不屑用这种方式来炫富。盛大见此情景,很贴心地推出了蛋糕服务,美其名曰“烟花,双击后发出全服可见的红字公告,效果持续1分钟”,仅需50元宝,烟花助你装B装到一路火花带电。
烟花的出现堪比第一次工业革命蒸汽机的发明,成为了《传奇》中一道亮丽的风景线和检验真伪土豪的重要标准。玩《传奇》,你没和其他人进行过蛋糕大战你都不好意思说自己是有钱人,其他玩家也不会承认你是土豪。于是,在烟花出现的头几年,经常会在游戏的聊天框看到如下对话:“XXX,你不是很牛吗?我就看不起你,不服蛋糕顶起”、“不想和你口水,真有能耐蛋糕见分晓”、“XXX,装逼货,敢不敢接我X万蛋糕”、“来来来,蛋糕搞起来,别说我欺负你这个穷B,你放一个,我放三个”……
从此,玛珐大陆上处处硝烟,土豪们开始了纯粹的烧钱行动,这种烧钱是真正的烧钱,它并不会给你的游戏数据带来一丝好处,就单纯地让其他玩家知道你有钱而已。一个蛋糕50块钱,正常速度一分钟起码能放30个,每分钟烧两千块钱轻轻松松,就看谁能坚持到最后。于是,在各大论坛上经常可以看到讨论蛋糕大战的帖子,当然,没烧个十万八万的一般都没什么点击率。
玩《传奇》这么多年,目睹的小型蛋糕战很多,一般土豪放个一万几千就偃旗息鼓了,也遇到过一两次大型蛋糕战,从晚上8点一路放到凌晨,保守估计每人起码烧掉二十万。更曾经在和其他玩家的交流中听他们提起,某土豪放蛋糕放到手累,专门雇代练来帮忙刷蛋糕,从早上9点开始刷足一整天,花了多少钱没人知道,反正大家都看麻木了。
直至现在,我依然在继续玩。我曾说过,我陪伴它度过了最辉煌的前几年,也看着它慢慢走向没落直到奄奄一息,我也会亲眼见证它的最终死亡。我想,我应该会守着这个承诺,除非它能活得比我更久。
传奇之后,再无网游,
谨以此文纪念曾经热爱传奇的大佬们,顺便祭奠一下曾经的热血青春以及《传奇》生涯。
本文由1.76传奇游戏——飞扬神途 玩家分享!!
*转载请标明来源*
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点&figure&&img src=&https://pic3.zhimg.com/v2-5f6ecd1e54c32aef7f9c292a4c2f49fc_b.jpg& data-rawwidth=&600& data-rawheight=&338& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-5f6ecd1e54c32aef7f9c292a4c2f49fc_r.jpg&&&/figure&&h2&&b&
使用Python生成自动报表(Excel)以邮件发送
&/b&&/h2&&p&
数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的、产品的等等。而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用Python来实现报表的自动发送,解放你的劳动力,可以让你有时间去做更有意思的事情。&/p&&p&
首先来介绍下实现自动报表要使用到的Python库:&/p&&p&&b&·&/b&pymysql
一个可以连接MySQL实例并且实现增删改查功能的库&/p&&p&&b&·&/b&datetime
Python标准库中自带的关于时间的库&/p&&p&&b&·&/b&openpyxl
一个可以读写07版以后的Excel文档(.xlsx格式也支持)的库&/p&&p&&b&·&/b&smtplib
SMTP即简单邮件传输协议,Python简单封装成了一个库&/p&&p&&b&·&/b&email
一个用来处理邮件消息的库&/p&&p&为什么使用openpyxl库来处理Excel呢?因为它支持每个sheet的行数为100W+,也是支持xlsx格式的文件。如果你接受xls文件,并且每个sheet的行数小于6W,也是可以使用xlwt库,它对大文件的读取速度要大于openpyxl。&/p&&p&
接下来我们就进入实战部分,来正式实现这个过程。我把整个实现过程分成几个函数的方式来实现,这样看着会比较有结构感。&/p&&p&
一、首先导入所有要用到的库&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&# encoding=utf-8
import pymysql as pms
import openpyxl
import datetime
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import smtplib
&/code&&/pre&&/div&&p&二、 编写一个传入sql就返回数据的函数get_datas(sql)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def get_datas(sql):
# 一个传入sql导出数据的函数
# 跟数据库建立连接
conn = pms.connect(host='实例地址', user='用户',
passwd='密码', database='库名', port=3306, charset=&utf8&)
# 使用 cursor() 方法创建一个游标对象 cursor
cur = conn.cursor()
# 使用 execute() 方法执行 SQL
cur.execute(sql)
# 获取所需要的数据
datas = cur.fetchall()
cur.close()
#返回所需的数据
return datas
&/code&&/pre&&/div&&p&&br&&/p&&p&三、 编写一个传入sql就返回数据的字段名称的函数get_datas(sql),因为一个函数只能返回一个值,这边就用2个函数来分别返回数据和字段名称(也就是excel里的表头)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def get_fields(sql):
# 一个传入sql导出字段的函数
conn = pms.connect(host='rm-rj91p2yhl9dm2xmbixo.mysql.rds.aliyuncs.com', user='bi-analyzer',
passwd='pcNzcKPnn', database='kikuu', port=3306, charset=&utf8&)
cur = conn.cursor()
cur.execute(sql)
# 获取所需要的字段名称
fields = cur.description
cur.close()
return fields
&/code&&/pre&&/div&&p&四、 编写一个传入数据、字段名称、存储地址返回一个excel 的函数et_excel(data, field, file)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def get_excel(data, field, file):
# 将数据和字段名写入excel的函数
#新建一个工作薄对象
new = openpyxl.Workbook()
#激活一个新的sheet
sheet = new.active
#给sheet命名
sheet.title = '数据展示'
#将字段名称循环写入excel第一行,因为字段格式列表里包含列表,每个列表的第一元素才是字段名称
for col in range(len(field)):
#row代表行数,column代表列数,value代表单元格输入的值,行数和列数都是从1开始,这点于python不同要注意
_ = sheet.cell(row=1, column=col+1, value=u'%s' % field[col][0])
#将数据循环写入excel的每个单元格中
for row in range(len(data)):
for col in range(len(field)):
#因为第一行写了字段名称,所以要从第二行开始写入
_ = sheet.cell(row=row+2, column=col + 1, value=u'%s' % data[row][col])
#将生成的excel保存,这步是必不可少的
newworkbook = new.save(file)
#返回生成的excel
return newworkbook
&/code&&/pre&&/div&&p&五、 编写一个自动获取昨天日期字符串格式的函数getYesterday()&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def getYesterday():
# 获取昨天日期的字符串格式的函数
#获取今天的日期
today = datetime.date.today()
#获取一天的日期格式数据
oneday = datetime.timedelta(days=1)
#昨天等于今天减去一天
yesterday = today - oneday
#获取昨天日期的格式化字符串
yesterdaystr = yesterday.strftime('%Y-%m-%d')
#返回昨天的字符串
return yesterdaystr
&/code&&/pre&&/div&&p&六、编写一个生成邮件的函数create_email(email_from, email_to, email_Subject, email_text, annex_path, annex_name)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def create_email(email_from, email_to, email_Subject, email_text, annex_path, annex_name):
# 输入发件人昵称、收件人昵称、主题,正文,附件地址,附件名称生成一封邮件
#生成一个空的带附件的邮件实例
message = MIMEMultipart()
#将正文以text的形式插入邮件中
message.attach(MIMEText(email_text, 'plain', 'utf-8'))
#生成发件人名称(这个跟发送的邮件没有关系)
message['From'] = Header(email_from, 'utf-8')
#生成收件人名称(这个跟接收的邮件也没有关系)
message['To'] = Header(email_to, 'utf-8')
#生成邮件主题
message['Subject'] = Header(email_Subject, 'utf-8')
#读取附件的内容
att1 = MIMEText(open(annex_path, 'rb').read(), 'base64', 'utf-8')
att1[&Content-Type&] = 'application/octet-stream'
#生成附件的名称
att1[&Content-Disposition&] = ' filename=' + annex_name
#将附件内容插入邮件中
message.attach(att1)
return message
&/code&&/pre&&/div&&p&七、 生成一个发送邮件的函数send_email(sender, password, receiver, msg)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def send_email(sender, password, receiver, msg):
# 一个输入邮箱、密码、收件人、邮件内容发送邮件的函数
#找到你的发送邮箱的服务器地址,已加密的形式发送
server = smtplib.SMTP_SSL(&smtp.mxhichina.com&, 465)
# 发件人邮箱中的SMTP服务器
server.ehlo()
#登录你的账号
server.login(sender, password)
# 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(sender, receiver, msg.as_string())
# 括号中对应的是发件人邮箱账号、收件人邮箱账号(是一个列表)、邮件内容
print(&邮件发送成功&)
server.quit()
# 关闭连接
except Exception:
print(traceback.print_exc())
print(&邮件发送失败&)
&/code&&/pre&&/div&&p&八、建立一个main函数,把所有的自定义内容输入进去,最后执行main函数&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def main():
my_sql = sql = &SELECT a.id '用户ID',\
a.gmtCreate '用户注册时间',\
af.lastLoginTime '最后登录时间',\
af.totalBuyCount '历史付款子单数',\
af.paidmountUSD '历史付款金额',\
af.lastPayTime '用户最后支付时间'\
FROM table a\
LEFT JOIN tableb af ON a.id= af.accountI&
# 生成数据
my_data = get_datas(my_sql)
# 生成字段名称
my_field = get_fields(my_sql)
# 得到昨天的日期
yesterdaystr = getYesterday()
# 文件名称
my_file_name = 'user attribute' + yesterdaystr + '.xlsx'
# 文件路径
file_path = 'D:/work/report/' + my_file_name
# 生成excel
get_excel(my_data, my_field, file_path)
my_email_from = 'BI部门自动报表机器人'
my_email_to = '运营部'
# 邮件标题
my_email_Subject = 'user' + yesterdaystr
# 邮件正文
my_email_text = &Dear all,\n\t附件为每周数据,请查收!\n\nBI团队 &
my_annex_path = file_path
my_annex_name = my_file_name
# 生成邮件
my_msg = create_email(my_email_from, my_email_to, my_email_Subject,
my_email_text, my_annex_path, my_annex_name)
my_sender = '阿里云邮箱'
my_password = '我的密码'
my_receiver = [']#接收人邮箱列表
# 发送邮件
send_email(my_sender, my_password, my_receiver, my_msg)
if __name__ == &__main__&:
&/code&&/pre&&/div&&p&
到这里呢发自动邮件的内容就全部结束啦,我每一行都标了注释,如果对于某个库还有些不理解,大家可以自行google或者百度一下。也欢迎私信我。&/p&&p&
各位看官如果喜欢,那就点个赞呗!!!&/p&
使用Python生成自动报表(Excel)以邮件发送
数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的、产品的等等。而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用Python来实现报表的自动发送,解放你的劳动力,可以让…
&figure&&img src=&https://pic4.zhimg.com/v2-fb96cecbed6ca_b.jpg& data-rawwidth=&1728& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1728& data-original=&https://pic4.zhimg.com/v2-fb96cecbed6ca_r.jpg&&&/figure&&h2&&b&本课程可以在课程结束前无理由退全款。&/b&&/h2&&p&&br&&/p&&p&&br&&/p&&p&万事开头难,想学编程的人很多,最大的阻碍是在入门这一关。&/p&&p&可能是选择了错误的教材、粗制滥造的课程,导致并不能听懂学会导致放弃、或是学到了不好的编程习惯和方式、或者没有能抓住重点似懂非懂(相信自己有过尝试的人能感受到这些问题)。&/p&&p&我们这个课程不同于传统或者说主流的方式(死板的知识罗列),更加注重如何掌握编程这个技能,专注理解原理而非死记硬背概念,强调代码风格,极度重视 “循序渐进” 的练习(我们的作业不是为了难倒学生,而是为了强化知识技能的熟练度)。&/p&&p&本课程使用 JavaScript 语言,可参考下面链接的试听课&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//www.bilibili.com/video/av& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【零基础】【课程试听】萧井陌的前端课程的试听_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili&/a&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&课程有什么独特优势?&/b&&/h2&&p&0,本课程在课程结束前可无理由退全部学费&/p&&p&1,请参考上文的试听课,它传达的就是我们的教学理念和方法&/p&&p&2,高效专业的答疑指导&/p&&p&3,循序渐进、提示详细的作业,高效强化知识技能的熟练度&/p&&p&4,课程结束后的一系列项目强化对知识的运用&/p&&p&5,无论你使用 Mac 还是 Windows,我们都会协助搭建环境解决问题&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&学习后能达到什么水平?&/b&&/h2&&p&1,主要的目的是掌握编程基础,能理解编程基础概念的原理和使用方法,为后续的专用领域知识学习打好编程基础&/p&&p&2,请参考下面的链接,编程入门课 Python 语言的练习项目(本课程练习大致相同,只是语言使用不同)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&第二期编程入门课程(基于 Python 语言)相关信息公告&/a&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&课程的其他相关介绍和信息&/b&&/h2&&p&1,开课时间为 8 月 13 日开始(周一周三周五晚上 7:30 - 9:30,一共 6 次)&/p&&p&2,每次课程 2 小时,第二天要写作业 2-3 小时&/p&&p&3,价格 1k&/p&&p&4,如果有其他需要咨询的问题,可以关注微信公众号「快编程」留言&/p&&p&&b&5,课程完成后,有为期 2 个月的项目作为练习,一共 20 个项目&/b&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&作业和退课退费规则&/b&&/h2&&p&1,在最后一课的当天 18:00 前,可以无理由退全款,直接向老师说明即可&/p&&p&2,下次课的当日 18:00 前提交作业(例如周一晚上的课程作业必须在周三下午 18:00 前上交),没有延期的选项&/p&&p&3,作业未完成会被强制退课并退费,退费也是退全款(作业难度是平滑递增的,并且有高效完善的答疑指导)&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&报名方法&/b&&/h2&&p&报名需要注册并在网站(&a href=&http://link.zhihu.com/?target=https%3A//www.kuaibiancheng.com/js& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&kuaibiancheng.com/js&/span&&span class=&invisible&&&/span&&/a&)上进行&/p&&p&&b&报名成功后,会告知群号,请加群&/b&&/p&&p&注意,这个网站需要用电脑使用&/p&&p&&/p&&p&&/p&
本课程可以在课程结束前无理由退全款。 万事开头难,想学编程的人很多,最大的阻碍是在入门这一关。可能是选择了错误的教材、粗制滥造的课程,导致并不能听懂学会导致放弃、或是学到了不好的编程习惯和方式、或者没有能抓住重点似懂非懂(相信自己有过尝试…
&figure&&img src=&https://pic3.zhimg.com/v2-377a5cd607e3b485fe7ec95fae60be97_b.jpg& data-rawwidth=&906& data-rawheight=&418& class=&origin_image zh-lightbox-thumb& width=&906& data-original=&https://pic3.zhimg.com/v2-377a5cd607e3b485fe7ec95fae60be97_r.jpg&&&/figure&&p&很高兴通知大家,Python 3.7 的&a href=&https://link.zhihu.com/?target=https%3A//pythoncaff.com/docs/tutorial/3.7.0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《入门教程》&/a& 已经翻译完毕。&/p&&p&号召翻译的帖子请见这里:&a href=&https://link.zhihu.com/?target=https%3A//pythoncaff.com/topics/375/python-document-translation& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&翻译召集 -- 《Python 3.7 中文官方文档:入门教程》&/a& &/p&&p&从号召到完成,花费不到一周的时间。&/p&&p&共有 42 位译者参与翻译,完整的列表请见:&a href=&https://link.zhihu.com/?target=https%3A//pythoncaff.com/docs/tutorial/3.7.0%3Fmode%3Dtranslators& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&参与译者列表&/a& &/p&&figure&&img src=&https://pic2.zhimg.com/v2-660a04ca8b37992cae6b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1958& data-rawheight=&482& class=&origin_image zh-lightbox-thumb& width=&1958& data-original=&https://pic2.zhimg.com/v2-660a04ca8b37992cae6b_r.jpg&&&/figure&&p& 下一步的计划是翻译标准库,这是将会是一项巨大的工程,请大家保持关注,很快我们就会开始行动的。&/p&
很高兴通知大家,Python 3.7 的 已经翻译完毕。号召翻译的帖子请见这里: 从号召到完成,花费不到一周的时间。共有 42 位译者参与翻译,完整的列表请见: 下一步的计划是翻译标…
&figure&&img src=&https://pic3.zhimg.com/ad657cdeb215_b.jpg& data-rawwidth=&1362& data-rawheight=&1048& class=&origin_image zh-lightbox-thumb& width=&1362& data-original=&https://pic3.zhimg.com/ad657cdeb215_r.jpg&&&/figure&&h1&多进程,多线程编程&/h1&&p&系统程序员、运维开发程序员在面试的时候经常会被问及一个常见问题:&/p&&blockquote&&p&进程是什么,线程是什么,进程和线程有什么区别?&/p&&/blockquote&&p&不得不承认,这么多年了。这个问题依旧是个很难以招架的问题,简单地说:&/p&&p&进程和线程有很多类似的性质,他们都可以被CPU作为一个单元进行调度,他们都拥有自己独立的栈(stack)等等。因此线程也被称作LWP(Lightweight Process,轻量级进程);对应的进程也可以被称作为HWP(Heavyweight Process,重量级进程),从线程的角度看,进程就是只有一个线程的进程。如果一个进程有多个线程,那么它就能同时(只有在SMT系统中才有可能真正的“同时”)执行多个任务。他们的异同可以从以下几个角度来论述:&/p&&h4&调度&/h4&&p&在传统的计算机操作系统中,CPU调度的基本单位是进程。后来操作系统普遍引入了线程的概念,线程成为了CPU调度的基本单位,进程只能作为资源拥有的基本单位。&/p&&h4&并行&/h4&&p&由于线程的引入,原先一个进程只能有一个并发,现在一个进程可以有多个线程并行执行。早期的很多HTTP server都是通过线程来解决服务器的并发,比起之前用fork子进程来处理并发效率有了数倍的提升。这一切都得益于线程可以用进程更低的代价实现并发。&/p&&h4&共享&/h4&&p&一般来说Linux线程会继承或共享如下资源:&/p&&ul&&li&进程代码段,如下图所示 &figure&&img src=&https://pic2.zhimg.com/fd51bfa97aff9_b.jpg& data-rawwidth=&1588& data-rawheight=&896& class=&origin_image zh-lightbox-thumb& width=&1588& data-original=&https://pic2.zhimg.com/fd51bfa97aff9_r.jpg&&&/figure&&br&&/li&&li&进程的公有数据段内存(利用这些共享的数据,线程很容易的实现相互之间的通讯)&/li&&li&进程打开的FD(File Descriptor,文件描述符)&/li&&li&信号的处理器&/li&&li&进程用户ID(UID)与进程组ID(PGID)&/li&&/ul&&h4&隔离&/h4&&p&Linux的线程会独立拥有如下资源(非共享):&/p&&ul&&li&线程ID,在Linux中线程和进程共享ID空间,在UNIX系统中线程的ID是和进程ID不同层面的概念&/li&&li&寄存器的值,这其实就是线程能作为独立调度单元的最必要的保证&/li&&li&线程的栈,这是线程能并行运行的保证&/li&&li&优先级,Linux的系统设计使得线程和进程除了在某些资源的共享&隔离有差异之外, 几乎是一视同仁的,所以他们可以有不同的priority。&/li&&/ul&&h2&多进程多线程的产生,在Linux系统中的地位&/h2&&p&Linux由于从一开始的定位就是一个多任务操作系统,从Linus Torvalds写出第一个版本的时候就有了进程的概念。比如我们耳熟能详的init进程的pid就是1。&/p&&p&线程的产生是为了解决并发问题,线程的定位也是轻量级的进程。&/p&&p&Linux内核在2.6版本之前都是没有线程的概念的,任务的最小调度单元都是进程。但Linux 在设计的时候就为线程的引入创造了良好的条件,Linux中著名的启动新进程系统调用fork就是通过内核调用clone实现的拷贝地址空间等资源。Linux通过改变内核调用clone的参数就很简单的创造出了线程。所以,从现代操作系统内核的调度的角度来说,进程和线程的差异微乎其微。&/p&&p&但不幸的是Linux早期的内核版本通过细微修改增加的线程机制和POSIX标准并不完全兼容,特别是信号处理、调度、跨进程同步的行为上。&/p&&p&为了推进Linux Threads和POSIX标准的统一,两拨人做了很多的努力:IBM牵头的NGPT (Next Generation POSIX Threads)和红帽(Red Hat)主推的NPTL(Native POSIX Thread Library)。这场竞争以NPTL的胜利告终,NPTL的用户态API就是我们现在常用的Pthread系列API。这场Red Hat战胜IBM的战争也基本确立了前者在Linux界扛把子的地位。&/p&&p&在NPTL成为Linux的POSIX事实标准之前,以FreeBSD为首的UNIX系统保持了对Linux的性能优势。这也就导致了很多历史比较老的公司当年系统都用的FreeBSD而不是Linux。&/p&&h3&为什么不能一味的开线程解决并发问题&/h3&&p&上面说到,线程的出现是为了解决Linux系统面临的日益增多的,并发编程的需求。&/p&&p&但就像我们这一小节的标题讲的一样:“不能一味的开线程解决并发问题”。&/p&&p&这是由于上下文切换(Context Switch)的代价:当计算机还处于单核时代的时候 ,就已经有了多任务操作系统。但单核的CPU在同一时刻只能运行一个进程的一个指令。 为了达到用户想要的“多任务”同时运行(比如,我在敲这段文字的时候,后台还在运行着 iTunes播放音乐,还有一个迅雷在我的虚拟机里运行)。Linux通过把CPU的时间切成 大小不等的时间片,通过内核的调度算法,让他们轮流来占用宝贵的CPU资源。由于切换的 时间片的大小一般都是微秒,所以在我们人类看来,计算机就在运行“多任务”。&/p&&h4&上下文切换(Context Switch)&/h4&&p&一个程序如果运行到了他的时间片结束还没有完成他的工作,那么,对不起,请把你需要 保存的数据(通常是一些CPU寄存器的数值)存储在内存中,然后排队去吧。&/p&&p&什么,稍等?NO,NO,NO 这不是一个用户态的进程能够和内核讨价还价的。&/p&&p&保存这个现场是需要一定的代价的,更严重的是,这将极大的影响CPU的分支预测, 影响系统性能。所以上下文切换(Context Switch)是我们要极力避免的。&/p&&p&进程或者线程开的多了,就会导致上下文切换(Context Switch)增多,严重影响 系统性能。&/p&&p&所以:“不能一味的开线程解决并发问题”。&/p&&h2&协程(coroutine)简介&/h2&&p&精辟的说,协程就是用户自己在进程中控制多任务的栈,尽可能的不让进程由于外部中断或者IO 的等待丧失CPU调度的时间片,从而在进程内部实现并发。&/p&&p&为了缓解,处理高并发的连接,Linux在很早的时候就引入了协程,来缓解上下文切换造成 的性能损失,在某种程度上实现异步编程。但由于协程的编程太过于晦涩难懂,所以即便是 协程在线程之前更早的被引入Linux内核,也始终没有流行起来。&/p&&p&下面是wikipedia对于协程的一段描述,大家可以参考一下:&/p&&blockquote&&p&到2003年,很多最流行的编程语言,包括C和他的后继,都未在语言内或其标准库中直接支持协程。(这在很大程度上是受基于堆栈的子例程实现的限制)。&/p&&p&有些情况下,使用协程的实现策略显得很自然,但是此环境下却不能使用协程。典型的解决方法是创建一个子例程,它用布尔标志的集合以及其他状态变量在调用之间维护内部状态。代码中基于这些状态变量的值的条件语句产生出不同的执行路径及后继的函数调用。另一种典型的解决方案是用一个庞大而复杂的switch语句实现一个显式状态机。这种实现理解和维护起来都很困难。&/p&&p&在当今的主流编程环境里,线程是协程的合适的替代者,线程提供了用来管理“同时”执行的代码段实时交互的功能。因为要解决大量困难的问题,线程包括了许多强大和复杂的功能并导致了困难的学习曲线。当需要的只是一个协程时,使用线程就过于技巧了。然而——不像其他的替代者——在支持C的环境中,线程也是广泛有效的,对很多程序员也比较熟悉,并被很好地实现,文档化和支持。在POSIX里有一个标准的良定义的线程实现pthread.&/p&&/blockquote&&p&但近些年来,golang的努力,似乎又让这个古老的机制有了复苏的迹象。&/p&&h2&程序运行时的内存布局&/h2&&p&首先我们需要了解一个基础知识:程序运行时的内存,也就是我们在用户态能看到的内存地址,都不是物理内存中的地址。现代操作系统都会在物理内存上做一层内存映射(memory mapping)。所以如下图,每个进程的内存空间都是独立的,0x8000这种地址在物理地址中其实是不一样的地址。&/p&&figure&&img src=&https://pic2.zhimg.com/4476ab6ffe6fcf0ceaca09c_b.jpg& data-rawwidth=&1346& data-rawheight=&1044& class=&origin_image zh-lightbox-thumb& width=&1346& data-original=&https://pic2.zhimg.com/4476ab6ffe6fcf0ceaca09c_r.jpg&&&/figure&&p&如上图,每个线程,都有自己独立的“栈”、“寄存器”、“线程计数器”。每个进程可以有多个线程。 同一个进程里的线程都可以共享内存空间。&/p&&h2&多进程和多线程的选用场景&/h2&&p&在Linux系统编程中,多进程和多线程都有自己的用武之地。&/p&&p&多数情况他们的选用是按照他们的特性,其中最重要的特性就是上面提过的“共享”、“隔离”。&/p&&p&我们举个例子来说吧:&/p&&p&我们所熟知的memcached,是个典型多线程编程。之所以他是多线程,而不是多进程 主要的一个原因在于,memcached的多个线程需要共享内存中的Key-Value数据。所以多线程 是一个必然的选择。&/p&&p&然后就是大名鼎鼎的Nginx,是个典型的多进程编程。由于Nginx所要处理的HTTP请求都是 比较独立的,没有太多需要共享的数据。更重要的是Nginx需要支持“不停服务重启server”这一特性 这个功能也是这能在多进程框架下才能实现的。&/p&&p&所以,一个结论就是:到底是多进程好,还是多线程需要根据业务场景来分析选择。&/p&&h2&Python的GIL&/h2&&p&GIL是Global Interpreter Lock的缩写。顾名思义,就是Python解释器的一个全局锁。 它的产生是由于Python解释器在实现的时候作者为了“糙快猛”地实现出一个原型引入了很多 全局变量,由于全局变量的存在就要加锁,为了加锁那干脆一不做二不休,加个全局锁吧…… 嗯,当时情况应该就是这样的。&/p&&p&后来Python逐渐流行起来,很多模块的作者一方面也是为了简化问题,另一方面也是由于Python解释器 本身就有GIL,很多模块自己也肆无忌惮地引入了很多全局变量。&/p&&p&从此Python的GIL就走上了一条不归路,对Python程序员的影响就是,Python的多线程在同一时刻 只能有一个线程在运行。多线程情况下就是线程不停地在抢锁,抢得头破血流。&/p&&p&关于Python的GIL及其造成的性能影响,这篇David Beazley的这篇文章做了非常深刻的论述:&/p&&blockquote&&p&&a href=&https://link.zhihu.com/?target=http%3A//blog.51reboot.com/global-interpretor-lock/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Global Interpretor Lock&/a&&/p&&/blockquote&&p&这部分的内容我们将在课上做更加深入的论述。&/p&&p&我们可以得到的结论:&/p&&ul&&li&Python的多线程对CPU密集型是反作用,对IO密集型可以采用&/li&&li&Python多进程能充分利用多核CPU&/li&&/ul&
多进程,多线程编程系统程序员、运维开发程序员在面试的时候经常会被问及一个常见问题:进程是什么,线程是什么,进程和线程有什么区别?不得不承认,这么多年了。这个问题依旧是个很难以招架的问题,简单地说:进程和线程有很多类似的性质,他们都可以被CP…
&figure&&img src=&https://pic3.zhimg.com/v2-eca124265deb712ca702de_b.jpg& data-rawwidth=&800& data-rawheight=&391& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic3.zhimg.com/v2-eca124265deb712ca702de_r.jpg&&&/figure&&blockquote&在此教程中学习如何将你的旧树莓派打造成一个完美的 Tor 中继节点。&/blockquote&&p&你是否和我一样,在第一代或者第二代树莓派发布时买了一个,玩了一段时间就把它搁置“吃灰”了。毕竟,除非你是机器人爱好者,否则一般不太可能去长时间使用一个处理器很慢的、并且内存只有 256 MB 的计算机。这并不是说你不能用它去做一件很酷的东西,但是在工作和其它任务之间,我还没有看到用一些旧的物件发挥新作用的机会。&/p&&p&然而,如果你想去好好利用它并且不想花费你太多的时间和资源的话,可以将你的旧树莓派打造成一个完美的 Tor 中继节点。&/p&&h2&&b&Tor 中继节点是什么&/b&&/h2&&p&在此之前你或许听说过 &a href=&http://link.zhihu.com/?target=https%3A//www.torproject.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tor 项目&/a&,如果恰好你没有听说过,我简单给你介绍一下,“Tor” 是 “The Onion Router(洋葱路由器)” 的缩写,它是用来对付在线追踪和其它违反隐私行为的技术。&/p&&p&不论你在互联网上做什么事情,都会在你的 IP 包通过的设备上留下一些数字“脚印”:所有的交换机、路由器、负载均衡,以及目标网络记录的来自你的原始会话的 IP 地址,以及你访问的互联网资源(通常是它的主机名,&a href=&http://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Server_Name_Indication%23Security_implications& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&即使是在使用 HTTPS 时&/a&)的 IP 地址。如过你是在家中上互联网,那么你的 IP 地址可以直接映射到你的家庭所在地。如果你使用了 VPN 服务(&a href=&http://link.zhihu.com/?target=https%3A//www.linux.com/blog/2017/10/tips-secure-your-network-wake-krack& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&你应该使用&/a&),那么你的 IP 地址映射到你的 VPN 提供商那里,而 VPN 提供商是可以映射到你的家庭所在地的。无论如何,有可能在某个地方的某个人正在根据你访问的网络和在网站上呆了多长时间来为你建立一个个人的在线资料。然后将这个资料进行出售,并与从其它服务上收集的资料进行聚合,然后利用广告网络进行赚钱。至少,这是乐观主义者对如何利用这些数据的一些看法 —— 我相信你还可以找到更多的更恶意地使用这些数据的例子。&/p&&p&Tor 项目尝试去提供一个解决这种问题的方案,使它们不可能(或者至少是更加困难)追踪到你的终端 IP 地址。Tor 是通过让你的连接在一个由匿名的入口节点、中继节点和出口节点组成的匿名中继链上反复跳转的方式来实现防止追踪的目的:&/p&&ol&&li&&b&入口节点&/b& 只知道你的 IP 地址和中继节点的 IP 地址,但是不知道你最终要访问的目标 IP 地址&/li&&li&&b&中继节点&/b& 只知道入口节点和出口节点的 IP 地址,以及既不是源也不是最终目标的 IP 地址&/li&&li&&b&出口节点&/b& 仅知道中继节点和最终目标地址,它是在到达最终目标地址之前解密流量的节点&/li&&/ol&&p&中继节点在这个交换过程中扮演一个关键的角色,因为它在源请求和目标地址之间创建了一个加密的障碍。甚至在意图偷窥你数据的对手控制了出口节点的情况下,在他们没有完全控制整个 Tor 中继链的情况下仍然无法知道请求源在哪里。&/p&&p&只要存在大量的中继节点,你的隐私被会得到保护 —— 这就是我为什么真诚地建议你,如果你的家庭宽带有空闲的时候去配置和运行一个中继节点。&/p&&h2&&code&考虑去做 Tor 中继时要记住的一些事情&/code&&/h2&&p&一个 Tor 中继节点仅发送和接收加密流量 —— 它从不访问任何其它站点或者在线资源,因此你不用担心有人会利用你的家庭 IP 地址去直接浏览一些令人担心的站点。话虽如此,但是如果你居住在一个提供 &i&匿名增强服务(anonymity-enhancing services)&/i&是违法行为的司法管辖区的话,那么你还是不要运营你的 Tor 中继节点了。你还需要去查看你的互联网服务提供商的服务条款是否允许你去运营一个 Tor 中继。&/p&&h2&&b&需要哪些东西&/b&&/h2&&ul&&li&一个带完整外围附件的树莓派(任何型号/代次都行)&/li&&li&一张有 &a href=&http://link.zhihu.com/?target=https%3A//www.raspberrypi.org/downloads/raspbian/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Raspbian Stretch Lite&/a& 的 SD 卡&/li&&li&一根以太网线缆&/li&&li&一根用于供电的 micro-USB 线缆&/li&&li&一个键盘和带 HDMI 接口的显示器(在配置期间使用)&/li&&/ul&&p&本指南假设你已经配置好了你的家庭网络连接的线缆或者 ADSL 路由器,它用于运行 NAT 转换(它几乎是必需的)。大多数型号的树莓派都有一个可用于为树莓派供电的 USB 端口,如果你只是使用路由器的 WiFi 功能,那么路由器应该有空闲的以太网口。但是在我们将树莓派设置为一个“配置完不管”的 Tor 中继之前,我们还需要一个键盘和显示器。&/p&&h2&&b&引导脚本&/b&&/h2&&p&我改编了一个很流行的 Tor 中继节点引导脚本以适配树莓派上使用 —— 你可以在我的 GitHub 仓库 &a href=&http://link.zhihu.com/?target=https%3A//github.com/mricon/tor-relay-bootstrap-rpi& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/mricon/tor-r&/span&&span class=&invisible&&elay-bootstrap-rpi&/span&&span class=&ellipsis&&&/span&&/a& 上找到它。你用它引导树莓派并使用缺省的用户 &code&pi&/code& 登入之后,做如下的工作:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&sudo apt-get install -y git
git clone https://github.com/mricon/tor-relay-bootstrap-rpi
cd tor-relay-bootstrap-rpi
sudo ./bootstrap.sh
&/code&&/pre&&/div&&p&这个脚本将做如下的工作:&/p&&ol&&li&安装最新版本的操作系统更新以确保树莓派打了所有的补丁&/li&&li&将系统配置为无人值守自动更新,以确保有可用更新时会自动接收并安装&/li&&li&安装 Tor 软件&/li&&li&告诉你的 NAT 路由器去转发所需要的端口(端口一般是 443 和 8080,因为这两个端口最不可能被互联网提供商过滤掉)上的数据包到你的中继节点&/li&&/ol&&p&脚本运行完成后,你需要去配置 &code&torrc&/code& 文件 —— 但是首先,你需要决定打算贡献给 Tor 流量多大带宽。首先,在 Google 中输入 “&a href=&http://link.zhihu.com/?target=https%3A//www.google.com/search%3Fq%3Dspeed%2Btest& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Speed Test&/a&”,然后点击 “Run Speed Test” 按钮。你可以不用管 “Download speed” 的结果,因为你的 Tor 中继能处理的速度不会超过最大的上行带宽。&/p&&p&所以,将 “Mbps upload” 的数字除以 8,然后再乘以 1024,结果就是每秒多少 KB 的宽带速度。比如,如果你得到的上行带宽是 21.5 Mbps,那么这个数字应该是:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&21.5 Mbps / 8 * 1024 = 2752 KBytes per second
&/code&&/pre&&/div&&p&你可以限制你的中继带宽为那个数字的一半,并允许突发带宽为那个数字的四分之三。确定好之后,使用喜欢的文本编辑器打开 &code&/etc/tor/torrc&/code& 文件,调整好带宽设置。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&RelayBandwidthRate 1300 KBytes
RelayBandwidthBurst 2400 KBytes
&/code&&/pre&&/div&&p&当然,如果你想更慷慨,你可以将那几个设置的数字调的更大,但是尽量不要设置为最大的出口带宽 —— 如果设置的太高,它会影响你的日常使用。&/p&&p&你打开那个文件之后,你应该去设置更多的东西。首先是昵称 —— 只是为了你自己保存记录,第二个是联系信息,只需要一个电子邮件地址。由于你的中继是运行在无人值守模式下的,你应该使用一个定期检查的电子邮件地址 —— 如果你的中继节点离线超过 48 个小时,你将收到 “Tor Weather” 服务的告警信息。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&Nickname myrpirelay
ContactInfo
&/code&&/pre&&/div&&p&保存文件并重引导系统去启动 Tor 中继。&/p&&h2&&b&测试它确认有 Tor 流量通过&/b&&/h2&&p&如果你想去确认中继节点的功能,你可以运行 &code&arm&/code& 工具:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&sudo -u debian-tor arm
&/code&&/pre&&/div&&p&它需要一点时间才显示,尤其是在老板子上。它通常会给你显示一个表示入站和出站流量(或者是错误信息,它将有助于你去排错)的柱状图。&/p&&p&一旦你确信它运行正常,就可以将键盘和显示器拔掉了,然后将树莓派放到地下室,它就可以在那里悄悄地呆着并到处转发加密的比特了。恭喜你,你已经帮助去改善隐私和防范在线的恶意跟踪了!&/p&&p&通过来自 Linux 基金会和 edX 的免费课程 &a href=&http://link.zhihu.com/?target=https%3A//training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&Linux 入门& &/a&来学习更多的 Linux 知识。&/p&&hr&&p&via: &a href=&http://link.zhihu.com/?target=https%3A//www.linux.com/blog/intro-to-linux/2018/6/turn-your-raspberry-pi-tor-relay-node& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&linux.com/blog/intro-to&/span&&span class=&invisible&&-linux/2018/6/turn-your-raspberry-pi-tor-relay-node&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&作者:&a href=&http://link.zhihu.com/?target=https%3A//www.linux.com/users/mricon& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Konstantin Ryabitsev&/a& 选题:&a href=&http://link.zhihu.com/?target=https%3A//github.com/lujun9972& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&lujun9972&/a& 译者:&a href=&http://link.zhihu.com/?target=https%3A//github.com/qhwdw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&qhwdw&/a& 校对:&a href=&http://link.zhihu.com/?target=https%3A//github.com/wxy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wxy&/a&&/p&&p&本文由 &a href=&http://link.zhihu.com/?target=https%3A//github.com/LCTT/TranslateProject& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LCTT&/a& 原创编译,&a href=&http://link.zhihu.com/?target=https%3A//linux.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linux中国&/a& 荣誉推出&/p&
在此教程中学习如何将你的旧树莓派打造成一个完美的 Tor 中继节点。你是否和我一样,在第一代或者第二代树莓派发布时买了一个,玩了一段时间就把它搁置“吃灰”了。毕竟,除非你是机器人爱好者,否则一般不太可能去长时间使用一个处理器很慢的、并且内存只…
&figure&&img src=&https://pic2.zhimg.com/v2-e83fee2bb066_b.jpg& data-rawwidth=&510& data-rawheight=&340& class=&origin_image zh-lightbox-thumb& width=&510& data-original=&https://pic2.zhimg.com/v2-e83fee2bb066_r.jpg&&&/figure&&p&&&b&先引用一篇关于“神奇Python”的相关介绍的文章来热热身,引用文章:&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/39647& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python 有那么神吗?&/a&&/b&&/p&&p&Python的确挺神的~但不是生来就那么神。Python是在1991年被创造出来的,但真正开始被广泛使用是Python 2.6以后的事情了。从2012年开始到现在,Python的热度持续累积,成为关注度增长最快的语言。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-c41f6cd882_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic1.zhimg.com/v2-c41f6cd882_r.jpg&&&/figure&&p&&br&&/p&&p&&b&图不重要,重要的是字&/b&&/p&&p&由于Python在设计上坚持清晰划一的风格,这使得Python成为一门易读、易维护的语言,在加上现如今Python这么火的现况下!很多小伙伴们都跃跃欲试,想要学起来,但是却苦于不知如何入坑?&/p&&p&&br&&/p&&p&那么重点来了,这才是重点,为方便各位同学学习,小编特地整理了一大波干货文章,供各位童鞋交流学习!助你入门,带你入坑……&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b3a2c5f3b3a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&180& data-rawheight=&180& class=&content_image& width=&180&&&/figure&&p&&br&&/p&&h2&&b&先从入门说起&/b&&/h2&&p&先给大家推荐的是系列文章,作者:&b&&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/u/4918788/articles& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&大牧莫邪&/a&&/b&,数了数,作者有关Python以及爬虫类,虽然现在也不过才40篇左右,但是作者还在继续更新(坏笑中^^),已更新的内容涉及的知识点包括:&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/details/id/21930& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基本数据类型&/a&、&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/details/id/21933& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&输入输出就是那么回事&/a&、&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/details/id/21934& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&选择和循环-总是伴随左右&/a&、&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/details/id/21958& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&字符串那些事儿&/a&、&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/details/id/21981& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&面向对象&/a&、&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/details/id/22158& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&正则表达式&/a&、&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/details/id/22716& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据筛选&/a&……好吧,省略的部分,还有更多精彩,强烈建议,&b&&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/u/4918788/articles& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击继续阅读&/a&&/b&,根据自己情况进行阅读学习。&/p&&p&&br&&/p&&h2&&b&然后&/b&&/h2&&p&& &b&coder_pig|&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/u/1128301/articles& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&小猪的Python学习之旅&/a&&/b&&/p&&p&以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#。和PHP有句&PHP是最好的语言& 这种家喻户晓的骚话一样,Python也有&人生苦短,我用Python&。而接触Python这个词最多的场合就是在一些技术群里,有些大佬张嘴动不动就说什么Py交易,作为潜伏在群里的开发萌新的我每次都会忍不住会发出这样的感慨:&/p&&p&&b&&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/38443& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击继续阅读&/a&&/b&&/p&&p&&br&&/p&&p&& &b&NavCat|&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/40657& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&聊聊python爬虫开发入门的必备技能&/a&&/b&&/p&&p&关于爬虫,相信有不少同学都接触过。譬如你通过百度搜索“慕课网”,然后跳转到慕课网的首页,这里你访问的百度首页就用到了爬虫技术,它把慕课网的首页源代码爬取到了搜索引擎服务器中,进行分析,处理等一系列的操作,这样你通过搜索关键词就会找到对应的网站。&/p&&p&&b&&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/40657& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击继续阅读&/a&&/b&&/p&&p&&br&&/p&&h2&&b&接下来&/b&&/h2&&p&& &b&东风冷雪|&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/39145& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python统计一下自己的花费&/a&&/b&&/p&&p&一直没有在意自己花了多少钱,我卡绑定了电话吧,取钱,支付宝什么的消费,过后都会短信通知,有时间准备统计一下,自己的情况。 然后散点图,柱状图,折线图表示出来。 x轴为时间,y轴为钱数。 占位,等我有时间,把几百条短信整理出来,在作图&/p&&p&&b&&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/39145& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击继续阅读&/a&&/b&&/p&&p&&br&&/p&&p&& &b&__bobby|&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/39675& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python的多路复用实现聊天群&/a&&/b&&/p&&p&在我的&a href=&https://link.zhihu.com/?target=https%3A//coding.imooc.com/class/200.html%3Fmc_marking%3Dae9f48aed16b%26amp%3Bmc_channel%3Dshouji& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《python高级编程和异步io编程》&/a&中我讲解了socket编程,这里贴一段用socket实现聊天室的功能的源码,因为最近工作比较忙,后期我会将这里的代码细节分析出来,目前先把代码贴上。大家自行研究运行一下。&/p&&p&&b&&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/39675& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击继续阅读&/a&&/b&&/p&&p&&br&&/p&&p&& &b&vipstone|&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/32831& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基于python的图片修复程序-可用于水印去除&/a&&/b&&/p&&p&在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢?&/p&&p&&b&&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/32831& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击继续阅读&/a&&/b&&/p&&p&&br&&/p&&p&& &b&元宵大师|&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/37019& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python图形界面开发—wxPython库的布局管理及页面切换&/a&&/b&&/p&&p&wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C++ 编写)封装实现。GUI程序的开发中界面布局是很重要的一个部分,合理的页面布局能够给予用户良好使用体验。虽然在GUI的控件和窗口布局上可以使用坐标,但更多且更方便的是用sizer来布局。本文主要介绍wxPython的布局管理应用以及在此基础上实现的页面切换功能。 最小架构实现...&/p&&p&&b&&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/37019& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击继续阅读&/a&&/b&&/p&&p&&br&&/p&&h2&&b&重点补充&/b&&/h2&&p&鉴于并不是所有小伙伴门都习惯于文字学习的方式,所以,为了方便小伙伴们更好的理解、学习。在此,推荐几门课程供大家根据自己的实际情况,选择学习。&/p&&p&&br&&/p&&h2&&b&快速入门上手课程:&/b&&/h2&&p&先推荐一门近期上线的入门级课程:&b&NavCat|&a href=&https://link.zhihu.com/?target=https%3A//coding.imooc.com/class/240.html%3Fmc_marking%3D9e773d2c4427fdb6efbf890%26amp%3Bmc_channel%3Dshouji& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《最火Python3 玩转实用小工具》&/a&&/b&,这门课程需要的技术储备很简单,只需要懂Python3语言基础就可以,适合人群:对爬虫感兴趣,但却对项目开发无从下手,如果有小伙伴是这种情况,那么这么课程是比较适合你的。&/p&&p&&br&&/p&&p&接下来,还有另一门入门快速上手的课程,这门课程也相当不错,那就是&b&七月|&a href=&https://link.zhihu.com/?target=https%3A//coding.imooc.com/class/136.html%3Fmc_marking%3D38e0ad6aac%26amp%3Bmc_channel%3Dshouji& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《全网最热Python3入门+进阶》&/a&&/b&这么。这门课程适合:只要你掌握基本的编程概念、对Python感兴趣的人都可以学习这么课程,这是一门真正入门课程,但并不止步于入门,将带你从入门向进阶过渡。&/p&&p&&br&&/p&&h2&&b&进阶课程:&/b&&/h2&&p&推荐&b&__bobby&a href=&https://link.zhihu.com/?target=https%3A//coding.imooc.com/class/200.html%3Fmc_marking%3Dae9f48aed16b%26amp%3Bmc_channel%3Dshouji& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《python高级编程和异步io编程》&/a&和七月|&a href=&https://link.zhihu.com/?target=https%3A//coding.imooc.com/class/220.html%3Fmc_marking%3D5da812fa484adc85e1d83a%26amp%3Bmc_channel%3Dshouji& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《Python Flask构建可扩展的RESTful API 》&/a&&/b&,这两门课程需要有一定的python基础,各位小伙伴在选购时,可以详细看一下课程的相关介绍,进行选择。如果小伙伴有志于从事人工智能方向,可以关注一下&b&Oscar老师|&a href=&https://link.zhihu.com/?target=https%3A//coding.imooc.com/class/176.html%3Fmc_marking%3Deb68227c1aecamp%3Bmc_channel%3Dshouji& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基于Python玩转人工智能最火框架 TensorFlow应用实践&/a&&/b& &b&和程序员硕|&a href=&https://link.zhihu.com/?target=https%3A//coding.imooc.com/class/213.html%3Fmc_marking%3D470c37e53318c2bba12b%26amp%3Bmc_channel%3Dshouji& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《Python3实用编程技巧进阶 》&/a&&/b&&/p&&p&&br&&/p&&p&读完此文,希望对大家能够有帮助,小伙伴们有什么建议,或者希望更多的看到哪类文章,都可以留言哦!非常期待与各位小伙伴的交流!&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-0a2ffafeb2a6f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&300& class=&content_image& width=&300&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&作者:慕课网官方_运营中心&/p&&p&链接:&a href=&https://link.zhihu.com/?target=http%3A//www.imooc.com/article/41334& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&imooc.com/article/41334&/span&&span class=&invisible&&&/span&&/a&&/p&&p&来源:慕课网&/p&&p&本文原创发布于慕课网 ,转载请注明出处,谢谢合作&/p&&hr&&p&&b&推荐阅读:&/b&&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//www.imooc.com/article/24589& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【官方】手记栏目认证作者招募,长期有效,随时报名!_慕课手记&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&有奖征文005期 |人生路上得一良师,是何感受?&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&前端干货合集(6.27)&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&区块链技术公司老生常谈区块链技术如何工作?&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&聊聊python爬虫开发入门的必备技能&/a&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&
&先引用一篇关于“神奇Python”的相关介绍的文章来热热身,引用文章:Python的确挺神的~但不是生来就那么神。Python是在1991年被创造出来的,但真正开始被广泛使用是Python 2.6以后的事情了。从2012年开始到现在,Python的热度持续累积…
&figure&&img src=&https://pic1.zhimg.com/v2-e619a8a227a109e3bea8e4d77dfb1a2f_b.jpg& data-rawwidth=&740& data-rawheight=&388& class=&origin_image zh-lightbox-thumb& width=&740& data-original=&https://pic1.zhimg.com/v2-e619a8a227a109e3bea8e4d77dfb1a2f_r.jpg&&&/figure&&p&分享一篇文章,原文来自:&a href=&https://link.zhihu.com/?target=http%3A//cuijiahua.com/blog/2017/10/spider_tutorial_1.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python3网络爬虫快速入门实战解析&/a&。&/p&&h2&&b&网络爬虫简介&/b&&/h2&&p&网络爬虫,也叫网络蜘蛛(Web Spider)。它根据网页地址(URL)爬取网页内容,而网页地址(URL)就是我们在浏览器中输入的网站链接。比如:&a href=&https://link.zhihu.com/?target=https%3A//www.baidu.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&baidu.com/&/span&&span class=&invisible&&&/span&&/a&,它就是一个URL。&/p&&h2&&b&1、审查元素&/b&&/h2&&p&在浏览器的地址栏输入URL地址,在网页处右键单击,找到检查。(不同浏览器的叫法不同,Chrome浏览器叫做检查,Firefox浏览器叫做查看元素,但是功能都是相同的)&/p&&figure&&img src=&https://pic4.zhimg.com/v2-1e74b6eb166b387fc3da090_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&776& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-1e74b6eb166b387fc3da090_r.jpg&&&/figure&&p&我们可以看到,右侧出现了一大推代码,这些代码就叫做HTML。什么是HTML?举个容易理解的例子:&b&我们的基因决定了我们的原始容貌,服务器返回的HTML决定了网站的原始容貌。&/b&&/p&&b&&figure&&img src=&https://pic3.zhimg.com/v2-a7bbb7022d3bbe1d8fdb7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&678& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-a7bbb7022d3bbe1d8fdb7_r.jpg&&&/figure&&/b&&p&为啥说是原始容貌呢?因为人可以整容啊!扎心了,有木有?那网站也可以&整容&吗?可以!请看下图:&/p&&b&&figure&&img src=&https://pic1.zhimg.com/v2-37c4efd1dace38feb6eb0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1008& data-rawheight=&414& class=&origin_image zh-lightbox-thumb& width=&1008& data-original=&https://pic1.zhimg.com/v2-37c4efd1dace38feb6eb0_r.jpg&&&/figure&&/b&&p&我能有这么多钱吗?显然不可能。我是怎么给网站&整容&的呢?就是通过修改服务器返回的HTML信息。我们每个人都是&整容大师&,可以修改页面信息。&b&我们在页面的哪个位置点击审查元素,浏览器就会为我们定位到相应的HTML位置,进而就可以在本地更改HTML信息。&/b&&/p&&p&再举个小例子:我们都知道,使用浏览器&记住密码&的功能,密码会变成一堆小黑点,是不可见的。可以让密码显示出来吗?可以,只需给页面&动个小手术&!以淘宝为例,在输入密码框处右键,点击检查。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-9c5dfcd15fdb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&575& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic2.zhimg.com/v2-9c5dfcd15fdb_r.jpg&&&/figure&&p&可以看到,浏览器为我们自动定位到了相应的HTML位置。将下图中的password属性值改为text属性值(&b&直接在右侧代码处修改&/b&):&/p&&figure&&img src=&https://pic3.zhimg.com/v2-1e20eaedc7e7f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&475& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-1e20eaedc7e7f_r.jpg&&&/figure&&p&我们让浏览器记住的密码就这样显现出来了:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a3eab65a06ea_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&475& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-a3eab65a06ea_r.jpg&&&/figure&&p&说这么多,什么意思呢?&b&浏览器就是作为客户端从服务器端获取信息,然后将信息解析,并展示给我们的。&/b&我们可以在本地修改HTML信息,为网页&整容&,但是我们修改的信息不会回传到服务器,服务器存储的HTML信息不会改变。刷新一下界面,页面还会回到原本的样子。&b&这就跟人整容一样,我们能改变一些表面的东西,但是不能改变我们的基因。&/b&&/p&&h2&&b&2、简单实例&/b&&/h2&&p&&b&网络爬虫的第一步就是根据URL,获取网页的HTML信息。&/b&在Python3中,可以使用&b&urllib.request&/b&和&b&requests&/b&进行网页爬取。&/p&&ul&&li&urllib库是python内置的,无需我们额外安装,只要安装了Python就可以使用这个库。&/li&&li&requests库是第三方库,需要我们自己安装。&/li&&/ul&&p&requests库强大好用,所以本文使用requests库获取网页的HTML信息。requests库的github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/requests/requests& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/requests/req&/span&&span class=&invisible&&uests&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&b&(1)requests安装&/b&&/p&&p&在cmd中,使用如下指令安装requests:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&pip install requests
&/code&&/pre&&/div&&p&或者:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&easy_install requests
&/code&&/pre&&/div&&p&&b&(2)简单实例&/b&&/p&&p&requests库的基础方法如下:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-e165f702df98d3f1902a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&576& data-rawheight=&251& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic4.zhimg.com/v2-e165f702df98d3f1902a_r.jpg&&&/figure&&p&官方中文教程地址:&a href=&https://link.zhihu.com/?target=http%3A//docs.python-requests.org/zh_CN/latest/user/quickstart.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&docs.python-requests.org&/span&&span class=&invisible&&/zh_CN/latest/user/quickstart.html&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&requests库的开发者为我们提供了详细的中文教程,查询起来很方便。本文不会对其所有内容进行讲解,摘取其部分使用到的内容,进行实战说明。&/p&&p&首先,让我们看下requests.get()方法,它用于向服务器发起GET请求,不了解GET请求没有关系。我们可以这样理解:get的中文意思是得到、抓住,那这个requests.get()方法就是从服务器得到、抓住数据,也就是获取数据。让我们看一个例子(以 &a href=&https://link.zhihu.com/?target=http%3A//www.gitbook.cn& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&gitbook.cn&/span&&span class=&invisible&&&/span&&/a&为例)来加深理解:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&# -*- coding:UTF-8 -*-
import requests
if __name__ == '__main__':
target = 'http://gitbook.cn/'
req = requests.get(url=target)
print(req.text)
&/code&&/pre&&/div&&p&requests.get()方法必须设置的一个参数就是url,因为我们得告诉GET请求,我们的目标是谁,我们要获取谁的信息。运行程序看下结果:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-96aebba6bc72ac0c23deba0568bbbce2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&531& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic2.zhimg.com/v2-96aebba6bc72ac0c23deba0568bbbce2_r.jpg&&&/figure&&p&左侧是我们程序获得的结果,右侧是我们在&a href=&https://link.zhihu.com/?target=http%3A//www.gitbook.cn& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&gitbook.cn&/span&&span class=&invisible&&&/span&&/a&网站审查元素获得的信息。我们可以看到,我们已经顺利获得了该网页的HTML信息。这就是一个最简单的爬虫实例,可能你会问,我只是爬取了这个网页的HTML信息,有什么用呢?客官稍安勿躁,接下来会有网络小说下载(静态网站)和优美壁纸下载(动态网站)实战,敬请期待。&/p&&hr&&p&你想更深入了解学习Python知识体系,你可以看一下我们花费了一个多月整理了上百小时的几百个知识点体系内容:&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.magedu.com/73198.html/%3FPython_wenzhang_zhihu_jinke_16daopythonmiansiti_& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【超全整理】《Python自动化全能开发从入门到精通》python基础教程笔记&/a&&/p&
分享一篇文章,原文来自:。网络爬虫简介网络爬虫,也叫网络蜘蛛(Web Spider)。它根据网页地址(URL)爬取网页内容,而网页地址(URL)就是我们在浏览器中输入的网站链接。比如:,它就是一个URL。1、审查…
&figure&&img src=&https://pic4.zhimg.com/v2-be5c9abefdc_b.jpg& data-rawwidth=&900& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&https://pic4.zhimg.com/v2-be5c9abefdc_r.jpg&&&/figure&&p&今天花了些时间给大家精心整理一份 Python 学习资料。我觉得不错的资料我都整理进来了,如果你是学习python的,我觉得这一份资料对你应该有用。&/p&&p&&br&&/p&&p&&b&1.知乎上超过 10k 的python相关回答&/b&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Yupeng:三天搞定Python&/a&&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&TheAnswer:编程零基础应当如何开始学习 Python?&/a& &/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&Wayne Shi:Python 的练手项目有哪些值得推荐?&/a& &/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&谢科:如何入门 Python 爬虫?&/a&&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&知乎用户:如何系统地自学 Python?&/a& &/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&Wayne Shi:Python 的练手项目有哪些值得推荐?&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&25 岁才开始学习编程靠谱吗?40 岁都不晚!&/a& &/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&一份Python爬虫电子书&/a& &/p&&p&&br&&/p&&p&&b&2.可以学习python的网站&/b&&/p&&p&Vamei老师:&a href=&http://link.zhihu.com/?target=https%3A//link.jianshu.com/%3Ft%3Dhttp%3A//www.cnblogs.com/vamei/archive//2682778.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【python快速教程】&/a&&br&廖雪峰老师:&a href=&http://link.zhihu.com/?target=https%3A//link.jianshu.com/%3Ft%3Dhttp%3A//www.liaoxuefeng.com/wiki/095c955c1e6d8bbfac& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【python教程】&/a&&br&实验楼:&a href=&http://link.zhihu.com/?target=https%3A//link.jianshu.com/%3Ft%3Dhttps%3A//www.shiyanlou.com/courses/%3Fcourse_type%3Dall%26tag%3DPython& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python基础+项目实战课程】&/a&&br&&a href=&http://link.zhihu.com/?target=https%3A//link.jianshu.com/%3Ft%3Dhttp%3A//learnpythonthehardway.org/book/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《笨办法学 Python》&/a&&br&&a href=&http://link.zhihu.com/?target=https%3A//link.jianshu.com/%3Ft%3Dhttp%3A//www.pythonweekly.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python Weekly&/a&&br&&a href=&http://link.zhihu.com/?target=https%3A//link.jianshu.com/%3Ft%3Dhttp%3A//www.pythonchallenge.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python challenge&/a&&br&&a href=&http://link.zhihu.com/?target=https%3A//link.jianshu.com/%3Ft%3Dhttps%3A//www.python.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python官方文档&/a&&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//top.jobbole.com/18767/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code Like a Pythonista: Idiomatic Python&/a&:如何像 Python 高手(Pythonista)一样编程。&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//hao.jobbole.com/python-pycrumbs/& class=& wrap external& tar

我要回帖

更多关于 别踩白块儿星空版2018 的文章

 

随机推荐