用Python来做些有意思的事
人生苦短,我用Python
- 拉钩北京Python招聘分析
- 自动维护iOS更新版本的脚本
拉钩Python招聘分析
大家都知道拉钩是一个比较靠谱的IT求职平台,所以我也就跑去拉钩抓取了一下北京Python招聘的信息
拉钩的招聘信息使用Ajax来动态获取的,我们用Chrome自带的开发者工具抓取了一下,发现如下请求
点进去看一下请求参数
queryString里就是城市,另一个参数不知道是用来干嘛的(需要额外的结果?)
请求参数里需要关注的就两个,一个是pn,也就是PageNumber,页数,另一个就是查询的关键字,这里我们是python
最后看一下请求结果
由于我想知道的是北京招聘Python是后端多,还是爬虫多,所以看了一下返回的json,发现这个secondType还是比较靠谱的,基本上和招聘的内容一致,所以就可以取出这个值来进行分析。
所以这个时候代码就很好写了,写一个循环,来增加页数,不断地请求接口就ok。
but,事情永远不会这么简单,当我兴高采烈的用多进程来跑程序的时候,程序崩溃了
赶紧查看了一下日志,发现转json的时候出错了,返回的页面是这样的
难道是老子请求太快报异常了?!嗯,tmd就是这个样子。
这里就有两种解决方案:
- 隔几秒再请求
- IP代理池
像我这么热爱学习的孩子,果断选择了最简单的第一种方案
当然第二种也是比较简单的,单独写个爬虫来爬取免费的IP代理网站,然后提供给当前爬虫程序使用,放个代理的网址,爬好之后如果用requests的话就可以这么用requests.get(url, proxies=proxies)
,别的我不会。
最后用matplotlib做个饼图
嗯,这是以前的图,就这么看吧。最近我的anaconda出问题了。后端的工作占比达到了91.8%,爬虫方向我记得没错好像是百分之三点多
自动维护iOS版本
我在公司做的是Android开发,iOS也是我的好基友,啊,好朋友。学py学的都gay里gay气的。
了解过移动开发的人应该都了解,iOS的测试包不能直接安装到手机上,要通过一个蒲公英的网站来上传IPA,并且扫描二维码安装。而我们公司内部也有一个维护iOS测试包链接的后台。当然这个链接就是链到蒲公英那里。他每次发布新的测试包都要去我们公司内部的后台维护链接。so,就有了这个脚本。
首先要登录到蒲公英,用requests管理cookie、session的话会比较简单,s = requests.session()
。然后用s来请求就可以了。
登录成功后去查看版本信息,https://www.pgyer.com/manager/dashboard/app/xxxxxx
后面的xxxx就是对应的app的一个码,这个码可以通过xpath或者bs4之类的获取到。然后进入这个网址,这个网址也是通过ajax来添加版本信息的,所以我们一样还是用Chrome来抓取一下,很简单
一样的套路,我们直接就可以获取到这些数据,当前version为5,用一个变量来存储起来,每五分钟或者十分钟去请求一次,请求回来后和当前version对比,如果发现了新版本,则把链接发送到我们自己的服务器上。
当然了,我们自己的服务器也没有给我接口,我是用selenium去模拟的,也是比较简单。
上传成功后会给他发送邮件。
这些功能加起来也不到100行代码,还是比较方便的。
嗯,我现在还是个初学者。个人认为自己用爬虫玩一玩的话这些工具或者框架就够用了
- requests
- scrapy
- selenium
- lxml
如果有大神看到这篇文章,希望能给我在爬虫方向个指引。没准以后我会转Python爬虫方向呢。
最后
爱小丽