美文网首页
python http请求与响应

python http请求与响应

作者: 张老三168 | 来源:发表于2018-04-16 17:21 被阅读0次

python urllib包

python内置了urllib包来处理http请求,主要是一下几个模块:

名称 功能
urllib.error 处理异常模块
urllib.parse 解析url模块
urllib.request 请求url模块
urllib.response 响应模块
urllib.robotparser 解析 robots.txt文件

主要方法

  • urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
    打开url或者对象

get请求

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import urllib
# import urllib2 # python3中没有 urllib2 用urllib.request替代

# get请求
resu = urllib.request.urlopen('https://hao.360.cn', data=None, timeout=10)
data = resu.read().decode()

#打开文件
fo = open('test.txt','a+',encoding = 'utf-8') # 打开文件 这里网络数据流的编码需要和写入的文件编码一致
fo.write(data)   # 写入文件
fo.close()       # 关闭文件

如果get的请求携带参数需要通过url方式传值

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import urllib
import json

def getExpressInfo(num):
    """
    通过快递单号获取快递详情方法
    :param num: Numbers 快递单号
    :return: mixed      快递详细
    """
    # get请求
    url = 'http://www.kuaidi100.com/autonumber/autoComNum?text=' + num # get请求通过url传值
    basicInfo = urllib.request.urlopen(url, data=None, timeout=10) # python3应该可以通过检测data是否携带参数来判断是get请求还是post请求
    data = json.loads(basicInfo.read().decode()) #解析返回对象获取

    comInfo = data['auto'][0]['comCode'] # 获取快递公司信息

    # 通过公司名称和快递单号请求快速100的API
    url2 = 'http://api.kuaidi100.com/api?id=be2205c7c55b54eb&com=' + comInfo + '&nu=' + num
    result = urllib.request.urlopen(url2, data=None, timeout=10)
    expressInfo = result.read().decode()

    print(expressInfo)
    #返回快递信息
    return(expressInfo)


num = '280688688407' # 快递单号

#调用快递信息方法
getExpressInfo(num)

post请求

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import urllib
import json

url = 'http://www.daily.com/ABC/ABC/ABC'
values = {
            "abc":"XXXXX",
            "efg":"XXXXX"
            }

headers = {'Content-Type': 'application/json'} # 设置请求头 告诉服务器请求携带的是json格式的数据
request = urllib.request.Request(url=url, headers=headers, data=json.dumps(values).encode(encoding='UTF8')) # 需要通过encode设置编码 要不会报错

response = urllib.request.urlopen(request) # 发送请求

logInfo = response.read().decode() # 读取对象 将返回的二进制数据转成string类型
print(logInfo)

备注:以上的是针对python3.5版本的,python2.7所使用的模块有很大的区别
(模块的源码没详细看,写的不对的地方,高手莫喷,多多指导!)

相关文章

  • python http请求与响应

    python urllib包 python内置了urllib包来处理http请求,主要是一下几个模块: 主要方法 ...

  • HTTP入门(二):用Chrome开发者工具查看 HTTP 请求

    HTTP入门(二):用Chrome开发者工具查看 HTTP 请求与响应 本文简单总结HTTP的请求与响应。本文主要...

  • http协议

    1-http 数据结构 http 请求格式:(请求与响应有细微的差别) http 响应格式 抓取包: 2-http...

  • HTTP 请求与响应

    HTTP简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种...

  • HTTP请求与响应

    1.服务器与浏览器的交互 HTTP请求与响应通过Server+Client+HTTP实现: 客户端( 浏览器)负责...

  • HTTP 请求与响应

    HTTP 请求包括哪些部分,如何用Chrome开发者工具查看 HTTP 请求内容 HTTP 响应包括哪些部分,如何...

  • HTTP请求与响应

    Server + Client + HTTP 浏览器负责发起请求 服务器在80端口接收请求 服务器负责返回内容(响...

  • http请求与响应

    HTTP请求 一个HTTP请求至少包括三部分,最多包括四部分 第一部分:动词 路径 ...

  • HTTP、请求与响应

    HTTP全称HyperText Transfer Protocol,超文本传输协议。在维基百科上的定义为:H...

  • http请求与响应

    http是一种超文本传输协议(HyperText Transfer Protocol),是目前使用最广的网络传输协...

网友评论

      本文标题:python http请求与响应

      本文链接:https://www.haomeiwen.com/subject/bifekftx.html