他妈的 Python(1):怎么发起一个同步的 HTTP 请求

  • 作者:大锐哥
  • 地址:http://blog.csdn.net/prevention
  • 转载注明来自:http://blog.csdn.net/prevention

向来是个粗俗的人,现在参与了一个高大上的项目开发。不知道以后博客里还让不让说「他妈的」了。要是他妈的不让说了,我这博客还真不想写。

为什么这么写他妈的博客的,都一个个装的人模狗样的,博客不就一笔记么?我就当个笔记用,谁爱看谁看,有问题问我,我也不一定回答。倒不是懒得理你,而是一般你问的问题,我他妈的也不会啊。

人家写入门博客都是从 hello world 开始,print 一下。我觉得没意思,项目里用到一次小小的 spider,用我不太熟悉的 python 实现了一下。你问为神马用他妈的 python?卧槽,不都说 python 效率高、屌的一逼吗?试试呗。脚本语言,就 perl 和 python 牛逼(bash 有时候必须得用,这个咱先不提),perl 处理个文本啊、写个自动代码生成器啊,比较牛逼。但是 python 可以很牛逼地写业务啊、写逻辑啊,好像效率很高的样子。

先发个同步请求再说

咱言归正个传,这个 python 里头也有 import 的概念(类似于 java、objective-c 的 import,或者 c、c++ 的 include 酱)。今儿咱们要 import 的库叫「urllib2」,我他妈也不知道这个 2 是啥意思,估计之前有个老版本,这个 2 就是新版本呗。但这他妈的也不重要吧,你先会写再说。

看段代码(我真他妈的啰嗦啊,才上代码,可能年龄大了,变话唠了):

url = "http://www.clubapp.com.cn"
req = urllib2.Request(url)
resp = urllib2.urlopen(req)

这就搞定了,发个同步 HTTP 请求,再 response 一下。「So easy!妈妈再也不用担心我的编程!」从这么一小段代码你他妈的就能看出来,这鸡巴 python 是个动态语言啊,我勒个擦擦,实例化的时候连他妈的类型都不用指定啊,这对于一个不常写动态语言的大锐哥来说,真心看着不舒服。

另外你还会发现这鸡巴函数怎么有两种:

  • 大写开头的Request
  • 小写开头的urlopen

我没查,以下都是瞎说:Request(...)这货像构造函数(constructor)啊,构造出一个 request,所以是大写开头。另外那个urlopen就是纯纯的呆萌的小函数而已,大写你个龟孙啊。

咋改 HTTP 请求头啊?

这个得会,要不咋伪装啊?不伪装小爬虫都不好写啊:

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3','Accept-Encoding': 'none','Accept-Language': 'en-US,en;q=0.8','Connection': 'keep-alive'}pageReq = urllib2.Request(pageUrl, headers=hdr)

嘿!有意思吧,你看这个Request函数第二个参数,形参名字直接写在里面,再表示等于实参就搞定了。这不错,由此猜测是不是参数顺序也不重要?只要带上形参名字?不知道啊,先留着,待会儿查查。这样的好处有点类似于 objective-c,就是你要带着形参名字,就很容易知道参数意思,否则 coding 的时候老要点到函数的定义里面去看(比如写 java、c、c++ 的时候)。

怎么从 response 里得到返回码啊

HTTP 返回 404、200 还是什么鬼,这个得知道吧?

rescode = resp.getcode()

就是你上面得到那个,调用下getcode得到的就可以和数字比较啦。

怎么从个 response 里得到响应的数据啊?

就这句:

data = res.read()

比如你要是请求的是个图片,这货可以直接写入到文件里,就保存到磁盘了。你要是请求的是个网页,这货直接就是 html 了,你可以打印出来瞧瞧:

print("response: \n" + data)

上面的打印里你可以看到,python 中字符串拼接和 java 一样,很方便吧。

对了,提一点,python 最最不爽的,是严格缩进。妈了个巴子的,这玩意儿能折腾死人(但是我相信有很好的 IDE 或者 emacs/vim 插件可以解决,只是我现在还木有去搜寻)。这就留作后话吧,像我这么啰嗦的人,这次就讲这么多吧。太多知识,主要不是篇幅有限,是他妈的我就会这么多啊。

遗留问题

  • Q:因为要带形参名字,函数参数顺序能随便改不?
  • A:随便搜了下,发现也可以不带形参名字,但是不带的话就必须保证和定义顺序一样(妈了个巴子的)。带上呢顺序自己随便玩,被老子蒙对了,突然觉得自己好牛逼。

  • 作者:大锐哥

  • 地址:http://blog.csdn.net/prevention
  • 参与项目:http://www.clubapp.com.cn
  • 转载注明来自:http://blog.csdn.net/prevention

他妈的 Python(1):怎么发起一个同步的 HTTP 请求相关推荐

  1. ASIHTTP 框架,同步、 异步请求、 上传 、 下载

    ASIHTTPRequest详解 ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目.让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度 ...

  2. 如何在github上发起一个pull request

    要在github上贡献自己的力量,就要了解github的协同工作模式,就是pull request的使用 注册一个github账号 打开github主页,注册一个账号. 安装客户端 客户端你可以安装原 ...

  3. Python:如何获取一个用户名的组ID

    getpwname只能得到gid一个username. import pwd myGroupId = pwd.getpwnam(username).pw_gid getgroups只能获取groups ...

  4. 用Python+Qt+Java整一个百宝箱

    用Python+Qt+Java整一个百宝箱 需求分析 课堂期末大作业,需要用Python做一个小项目.我自己有一些小的想法以及网上也有许多好玩.有用的通过Python实现的小工具,于是打算做一个百宝箱 ...

  5. python查询和替换一个文本字符串_【Python】python面试题

    一些Python面试题 1. (1)python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只 ...

  6. Python 是否是下一个 PHP?为什么?

    前几天和一个看好 Python 的 Rails 开发者聊天,他看好 Python 的原因就是 PHP 统治今天的网络应用开发.而 Python 很像下一个 PHP . 『下一个 PHP』如何定义?是指 ...

  7. 用Python Turtle库画一个萌化的蜘蛛侠

    你是从什么时候开始喜欢上漫威电影的?美国队长,钢铁侠,雷神? 我先入坑的是因为看了蜘蛛侠,小时候看完就幻想着什么时候自己也能成为一个英雄,我觉得第一代蜘蛛侠刻画得是最好的,也是给我印象最深刻的一代蜘蛛 ...

  8. Python使用tkinter构建一个多元回归预测模型GUI界面(接受用户输入数据并给出模型推理结果)

    Python使用tkinter构建一个多元回归预测模型GUI界面(接受用户输入数据并给出模型推理结果) 目录

  9. Python 学习之中的一个:在Mac OS X下基于Sublime Text搭建开发平台包括numpy,scipy

    1 前言 Python有许多IDE能够用,官方自己也带了一个,Eclipse也能够. 但我在使用各种IDE之后,发现用Sublime Text是最好用的一个.因此.我都是用Sublime Text来编 ...

最新文章

  1. python与caffe改变通道顺序
  2. Codeforces 1196E Connected Component on a Chessboard
  3. Java调用.NET的WCF
  4. [Java核心技术(卷I)] - 简易的日历
  5. 助力全站WebP ,阿里云云上FPGA 团队发布 WebP图片解决方案
  6. c语言:malloc函数的简介
  7. 程序员为什么要少写代码?
  8. SuseLinux详解(1)——设置开机启动为命令行模式
  9. vue字符串转时间_vue总结01
  10. C# 实现阴历阳历互转
  11. 腾讯魏巍:Eunomia云原生资源编排优化
  12. 计算机怎么开机操作,电脑怎么设置键盘开机?
  13. CJT长江连接器A2005系列线对板连接器排针排母PCB封装库
  14. 怎么查看网站在百度是否安全?提示网站有风险怎么办?
  15. 个是云计算,一个大数据,一个人工智能,
  16. activeroot翻译,Active翻译
  17. 语音处理:音频信号短时平稳性分析
  18. 用python按日期将微信文件移动到月份文件夹内
  19. 抛出异常和捕获异常_多捕获和最终重新抛出的异常处理
  20. 2021Java期末考选择判断题复习

热门文章

  1. appium实现向上滑动,向下滑动,向左滑动,向右滑动
  2. iQOO正式面世,vivo怎么玩转独立子品牌?
  3. 学习笔记 - 大数据导论
  4. 神经网络与深度学习(二) pytorch入门——张量
  5. dede 后台 一直显示验证码不正确的原因
  6. 胶质瘤新发现丨神经胶质瘤标志物研究
  7. 陈立杰的励志演讲. 充满动力地走下去吧!
  8. English--五大基本句型基本概念
  9. Kyndryl从IBM完全剥离在纽交所独立上市;新思科技收购AI驱动性能优化软件企业Concertio | 全球TMT...
  10. [windows]VS2015配置Lemon图论算法库