requests
是一个简单优雅的 Python HTTP 库,相较于 Python 标准库中的urllib
和urllib2
,requests
更加的便于理解使用。
背景介绍
由于某地区热点事件持续升温,我们的客户想要通过我们系统的搜索功能导出一批数据,目前我们的搜索结果是不支持导出的,并且搜索功能也是通过调用几个子服务后对数据进行了合并,所以无法直接通过 ElasticSearch
来捞数据。
我们在评估需求后,预计编写这个统计程序大概需要 1 天的时间,但是客户认为事态紧急,当天就要结果,我们本着顾客就是上帝的原则,又进行了一番讨论,结论是可以写一个类似爬虫的工具,来「爬取」我们自己的搜索接口来拿到这些数据。
用 Python
来实现最合适不过,而且我对编写爬虫也比较熟悉,所以就采用了最简单粗暴的方法:用 requests
包作为一个 HTTP Client
来收发请求,但是客户现场是个离线环境,之前我们也没有安装过 requests
,所以才有了本文:在离线环境中安装 requests
。
正文
资源准备
为方便后期使用,我将所有用到的文件打包在了一起,可直接解压使用,无需从网上东奔西走寻找资源。
压缩包内涉及到的文件如下:
1 | setuptools-41.1.0.post1.tar |
打包资源下载链接:http://developer.jpanj.com/requests-offline.tar.gz
安装
解压 requests-offline.tar.gz
后进入 requests-offline 目录开始安装。
安装 setuptools
setuptools
能帮助我们更好的创建和分发 Python 的包,尤其是具有复杂依赖关系的包。
1 | tar -zxvf setuptools-41.1.0.post1.tar.gz |
安装 pip
pip
是 Python 官方推荐的包管理工具。
1 | tar -zxvf pip-19.2.2.tar.gz |
安装 requests 所需的其他依赖
1 | # CA 认证模块 |
安装 requests
1 | tar -zxvf requests-2.22.0.tar.gz |
测试是否成功成功
1 | ➜ python |
后记
客户是下午两点半提出的需求,内部讨论好实现方案后三点半,我在准备好安装 requests
所需资源后直接奔赴现场,而不是在公司编码完再过去,因为我相信只要有我们的人到达现场客户就可以踏下心来了,同时我也想挑战一下自己,所以本次点亮了一个技能点:现场使用 vi 进行 coding 和 debug。