你经常用python来做什么,你觉得有什么优点?

蒋凤君

首先感谢邀请:你经常用Python来做什么?我们都知道Python可以做很多东西,今天我就我做过的几个小列子给大家分享一下:

首先上一首Python之禅:

Python是一个非常好用的程序语言,开发的速度非常快。我用Python已经几年的时间了,从Python2.7到现在的Python3.7,也写了好多的小程序其中大部分都是爬虫程序,下面简单列举几个:


1.制作引文分析利器HistCite的便捷使用版本


怎么又出现了一个序号为零的啊!没错,这个又是我后来加上的,哈哈~

对于整天和文献打交道的研究生来说,HistCite是一款不可多得的效率利器,它可以快速绘制出某个研究领域的发展脉络,快速锁定某个研究方向的重要文献和学术大牛,还可以找到某些具有开创性成果的无指定关键词的论文。但是原生的HistCite已经有4年没有更新了,还可以找到某些具有开创性成果的无指定关键词的论文。


2. 破解观看中科大网络课堂


中国科学技术大学网络课堂(http://wlkt.ustc.edu.cn/)是一个非常好的平台,上面汇集了很多知名教授的授课视频,以及最新的讲座、报告、表演视频,内容还是相当丰富的。但是这些视频只面向校内IP开放。

所以想在校外看到这些视频必须破解视频地址,于是利用Python的requests库结合BeautifulSoup,用了不到10行代码就可以获取真实下载地址。

为了方便没有安装Python的电脑使用,简单写了一个GUI界面,给室友用,都说还是挺好的用的哈。


这是我自己整理的Python一套学习资源,需要的请私信,私信关键词:学习资料。



3. 获取中科大研究生系统全部学生姓名、学号、选课信息


登录中国科学技术大学的研究生综合系统(中国科学技术大学研究生信息平台),可以看到每一门课选课的学生姓名和学号,当时就想能不能做一个这样的系统,来输入任何姓名(或者学号)就可以看到他所有的选课信息呢?这是选课首页:

点击每门课的已选人数链接,可以看到所有的选课学生姓名和学号:

下面就利用requests的模拟登录功能,先获取全部课程的链接,并保存对于的课程信息,然后挨个获取了所有课程的选课信息。为了保护学生信息,对程序的关键部分进行了模糊处理,希望大家谅解。

这样就获取了一个巨大的json文件,里面全部是学生姓名学号选课信息:

有了这个json文件,我们可以写入数据库,也可以直接利用json文件来查询:

为了方便其他人使用,基于上面的数据我开发了一个线上版本:

输入姓名或者学号都可以直接查询别人的选课信息:

这个地址就不放出来了。。具体原因你懂的。。。


4. 扫描中科大研究生系统上的弱密码用户


基于上面获得的选课学生学号,很容易利用Python依次模拟登录研究生,密码就用弱密码123456,然后可以获得身份证号码等重要信息。

这样就得到了使用123456作为密码的用户信息,所以在此提醒大家一定不要使用弱密码,希望下面的同学早日修改密码。


5. 模拟登录中科大图书馆并自动续借


最近,科大图书馆系统升级了,到处都加了验证码,所以下面这个方法直接使用肯定是不行了,不过曾经毕竟成功过哈。以前收到借阅图书到期通知短信,就会运行一下这个程序,自动续借了,然后就可以再看一个月了。

运行就是这样的,自动续借成功,看到的链接就是每本书的续借链接。


6. 网易云音乐批量下载


终于来一个正常一点的哈,那么我就直接放代码吧,可以下载网易云音乐各个榜单的全部歌曲,批量下载,速度挺快。请注意提前要创建一个名为 “网易云音乐” 的文件夹。

于是就可以愉快的听歌了。

上面这些都是在Python3的环境下完成的,在此之前用Python2还写了一些程序,下面也放几个吧。初期代码可能显得有些幼稚,请大家见谅。


7 .批量下载读者杂志某一期的全部文章


上次无意中发现读者杂志还有一个在线的版本,然后兴趣一来就用Python批量下载了上面的大量文章,保存为txt格式。

# Python 2.7.9


response = urllib2.urlopen(url)


8.爬LOL英雄皮肤高清图片


爬取了当前比较火的游戏壁纸,MOBA游戏《英雄联盟》,手游《王者荣耀》、《阴阳师》,FPS游戏《绝地求生》,其中《英雄联盟》的壁纸最难爬取,这里展示爬取《英雄联盟》全部英雄壁纸的过程。

先看一下最终爬取的效果,每个英雄的壁纸都被爬取下来了:

“黑暗之女 安妮”的12张壁纸:


1.爬虫流程图

至此对我要爬取的对象已经有了一定的了解,对于具体爬取方法也有了想法,可以设计如下爬虫流程图:

2.设计代码整体框架

根据爬虫流程图,我设计了如下代码框架:

这个代码框架非常容易读懂,主要就是run()函数,run()函数完成了这样一套工作:创建LOL文件夹——获得键盘输入的信息——若信息为“All”则爬取全部英雄壁纸,否则爬取单个英雄壁纸。

3.爬取所有英雄信息

首先我们要解析champion.js文件,得到英雄英文名与id的一一对应关系。

对于官网网站上的所有英雄信息页面,由于是用 JavaScript 加载出来的,普通方法并不好爬取,我使用了 Selenium+PhantomJS 的方法来动态加载英雄信息。

4.爬取英雄壁纸

得到每一个英雄的信息后,我们就可以开始愉快的爬取它们的壁纸啦~定义get_image(heroid,heroframe) 函数,用于爬取单个英雄的全部壁纸。

运行代码时注意保持网络畅通,如果网速太慢可能会爬取失败。在3兆有线网的网速下爬取全部139个英雄的全部高清壁纸(约一千张图)大概要3-4分钟。

《王者荣耀》、《阴阳师》、《绝地求生》等其他游戏的壁纸也是同样道理就可以爬取了,据我实践,《英雄联盟》的爬取难度是最高的,因此将上述过程弄懂了,自己再编写代码爬其他游戏就易如反掌了。


9.美团网餐饮商家的信息爬取


本次对【常州美食】全部美食推荐 进行一次爬虫实践,主要想爬取的信息有:餐厅的名称、餐厅的评分、餐厅评论数、餐厅的地址、人均消费价格……

最终爬下来的数据保存为CSV如下:

美团使用了反爬虫机制,要模拟浏览器来进行爬取。经过几次尝试,发现只对 Cookie 和 User-Agent 进行校验。

爬到第一组数据之后,接着就是想翻页的事情。翻页特别简单,于是又爬取了商家电话、营业时间等信息。

打包写个函数

但好景不长,爬到一半的时候被403了。

因为被封了,我们只能用无痕方式来访问了。看了下,决定采用多个 Cookie 然后随机调用的方式来避免被封了。最终使用了17个cookie,经过测试,可以高速爬取不被封。

这次的爬取在这里结束了,但是爬回来的数据可以做很多分析,比如在不同的地段外卖的情况,商家的分布等等。


9.爬当当网各分类所有五星图书


这次作业选择爬取的网站是当当网,当当有比较多的图书数据,特别是五星图书,包含了各个领域最受欢迎的图书信息,对于寻找有价值的图书、分析好书的销售情况具有一定的价值。

最终爬取的数据如下,总共10000+行数据:

我想爬取的数据是各分类(小说、中小学教辅、文学、成功/励志……)下面的五星图书信息(书名、评论数、作者、出版社、出版时间、五星评分次数、价格、电子书价格等等)。

为了抓各分类下的图书信息,首先看看点击各分类的时候,链接是否发生变化。经过测试,在不同的分类,链接都是不一样的,事实证明不是JS加载。

打印之后正常返回数据

到这里基本可以知道,当当网的反爬确实不严格,我甚至还没有设置Headers的信息,竟然也可以爬取到想要的数据。但最后在完整的代码中,还是把headers加上了,保险起见吧。

接下来就是分别爬取每个分类下的图书信息,以“小说”为例,其实翻页特别简单,给几个比较如下:

翻页也非常简单,只不过有一点点坑的是,爬回来的链接在代码中,需要对其翻页,就需要把链接构造出来。对返回来的链接进行分析,发现仅仅是中间有四个数字不一样。于是我把这几个数据取出来,在连接中传进去,这样可以构造通用的链接。

构造的翻页链接

接下来就是去抓取不同页面的信息,没有异步加载,所以直接用xpath定位就OK。当然中间有一些小地方需要注意的是,每本书所包含的信息是不一样的,所以用xpath去获取的时候不一定能获取到,就会出错。于是用到try……except语句。

最后总共爬到10000多行数据,对应不同领域的10000多本高评分的书籍,当然会有一些重复计算,比如小说和文学,就有不少书是同时在这两个类目的。

当当网本身没有什么反爬机制,所以爬取也比较顺利。唯一的小麻烦就是抓回来的链接继续翻页和其中一些书籍中部分信息缺失的处理。


10.爬拉勾网职位信息


本来就想从事“数据分析师”这个岗位,所以就想了解这个岗位的薪资、要求、以及在我所生活城市的主要分布点,而拉勾网是权威的互联网行业招聘平台,所以爬取拉勾网上的“数据分析师”职位信息有很好的代表性。

最终爬到的数据存在MongoDB中如下:

学习翻页的时候把引号添上运行时报了JSONDecodeError的错,本人被引号折腾了许久,分享出来希望大家引以为戒。

踩了两个坑之后,就开始做课后作业了,没想到对于一个新手来说困难一茬茬。开始我的思路是找连接,但是采集的数据里没有连接,所以就点击进入详情页面,看有什么规律没?然后就尝试着多次点击各详情页面,发现页面的数字和采集的某个数据能匹配。例如:

某个详情页面

找到突破口就开始行动:

DOC

request url equest method

多次尝试(还是费了一些时间):request url和网址是一样的,那突破口就算找到,数据是DOC格式,request method :get,那就是又回到了熟悉的战场了。

思路:遍历positionId,用format,如:

详情网页

xpath方法获取数据

部分数据:

一次次尝试,优化后的代码,这个主要是学习和创作的过程(爬取详情页面是我的杰作)。


结语:Python是一个利器,而我用到的肯定也只是皮毛,写过的程序多多少少也有点相似,但是我对Python的爱却是越来越浓的。


你认为Python有什么优点:


1. 简单 Python的语法非常优雅,甚至没有像其他语言的大括号,分号等特殊符号,代表了一种极简主义的设计思想。阅读Python程序像是在读英语。


2. 易学 Python入手非常快,学习曲线非常低,可以直接通过命令行交互环境来学习Python编程。


3. 免费/开源 Python的所有内容都是免费开源的,这意味着你不需要花一分钱就可以免费使用Python,并且你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。


4. 自动内存管理 如果你了解C语言、C++语言你就会知道内存管理给你带来很大麻烦,程序非常容易出现内存方面的漏洞。但是在Python中内存管理是自动完成的,你可以专注于程序本身。


5. 可以移植 由于Python是开源的,它已经被移植到了大多数平台下面,例如:Windows、MacOS、Linux、Andorid、iOS等等。


6. 解释性 大多数计算机编程语言都是编译型的,在运行之前需要将源码编译为操作系统可以执行的二进制格式(0110格式的),这样大型项目编译过程非常消耗时间,而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。


7. 面向对象 Python既支持面向过程,又支持面向对象,这样编程就更加灵活。


8. 可扩展 Python除了使用Python本身编写外,还可以混合使用像C语言、Java语言等编写。


9. 丰富的第三方库 Python具有本身有丰富而且强大的库,而且由于Python的开源特性,第三方库也非常多,例如:在web开发、爬虫、科学计算等等


Python虽然有很多优点,但是它也不是完美的,它也有自身的缺点。


1. 速度慢 由于,Python是解释型语言,所有它的速度会比,C、C++慢一些,但是不影响使用。由于,现在的硬件配置都非常高,基本上没有影响,除非是一些实时性比较强的程序可能会受到一些影响,但是也有解决办法,可以嵌入C程序。


2. 强制缩进 如果你有其他语言的编程经验,例如:C语言或者Java语言,那么Python的强制缩进一开始会让你很不习惯。但是如果你习惯了Python的缩进语法,你会觉得它非常优雅。


3. 单行语句 由于Python可以在尾部不写分号,所以一行只能有一条语句,这可能也算是一个不足吧,不过这真的微不足道。


使用Python的知名网站

国内的:

  • 豆瓣
  • 果壳
  • 知乎
  • Sohu邮箱

国外的:

  • youbube
  • Gmail邮箱
  • Dropbox
等等等等。。。

以上就是我的回答,部分来源网络和自己整理,对于Python可以做哪方面的工作,优点和缺点,欢迎大家在评论区留言。


菜鸟学Python

人生苦短, 我用Python。

下面结合个人的经历讲下对python的一点粗浅看法。

接触python是工作中是大约在09年的时候以色列同事用python+tcl做了一个工具,用来给嵌入式的下位机来下载程序, 还有就是scons用来做编译代码。

再接下来就是2012年在Coursera上看到,参考下面链接, 还跟着学着写了一个打飞机的小游戏。

https://www.coursera.org/learn/interactive-python-1

真正熟悉的是在2013年现在公司中需要做一个分析数据带UI的工具,实在不想用MFC来开发, 主要是效率太低, 于是在网上看了下pyQT/pySide的示例,用pySide+python用一个礼拜的时间完成了这个软件。 可以将工作中用到的数据进行分析, 能非常直观的看到数据的特征,让工程师很快的做些算法处理,并能及时辅助显示一些过程和关键变量,极大的提高了大家的效率,得到了一致好评。最后这工具可以扩展到量产相关,及相关的产品中。

后来用python+beautifulSoup做了爬虫去爬点网站数据,方便分析二手房成交趋势,然并卵。

再后来用python+openCV,做了初步分析图像的工具。

之间也用python来处理一些文本, excel数据, 分析特征。

现在也用django来处理一些可以用网页来呈现一些用excel统计的数据, 将信息汇总。

等等

总之, python 可以做很多事, 关键是可以很快的做很多事情, 特别是对有几年编程经验的朋友用起来更是如鱼得水。个人总结python的优势主要有以下三点:

1. 开放性

1.1 python开源, 允许很多人基于python来做很多第三方的库, 可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。Python希望看到一个更加优秀的人创造并经常改进。

1.2 正因为他开放和开源, 很多程序员开发了非常丰富的库

。Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,包括正则表达式、文档生成、网页浏览器、单元测试、线程、数据库、电子邮件、XML、、HTML、密码系统、GUI(图形用户界面)、其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。

2. 易学

2.1 python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身

2.2 Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

3. 可移植性和 可扩展性

3.1 可移植性 由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2等等甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!

3.2 可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。


黄曼巴2013

爬虫

做一个关于二手书的创业项目,所以写了个爬虫把目标网站的所有书内容全部爬了下来,最终数据量大概几个G吧。项目已开源在github


自动化

广告


分享到:


相關文章: