.net ajax post get请求urlencode,urllib get 和 post 、ajax 请求详解

GET请求:

GET 请求的参数一般放到浏览器地址后面 用? $key=value 方式传输

如:type=11&interval_id=100%3A90&action=&start=0&limit=1

可在抓包工具的 Querry String 中查看

40cc202a3dfbe11a8cf617e143355cd3.png

POST 请求:

url地址:并不是浏览器地址,而是抓包后的地址

Data参数:Request请求对象的里有data参数,它就是用在POST里的,我们要传送的数据就是这个参数data,一般data 先弄成字典,然后根据Python 环境,转成key=value 类型字符串或 bytes,iterable.

python2 和python3 差异

python2:

data是一般是字典,里面要匹配键值对,然后用urlencode() 转换成kye = value字符串

data 如果遇到中文参数,也需要利用 urlencode 进行转码成key=value 格式

python 3

data 先弄成字典,然后传urlencode() 转 key=value 字符串,再encode('utf-8') 转bytes

发送POST请求时,需要特别注意headers的一些属性:

Content-Length: 144: 是指发送的表单数据长度为144,也就是字符个数是144个。

X-Requested-With: XMLHttpRequest :表示Ajax异步请求。

Content-Type: application/x-www-form-urlencoded : 表示浏览器提交 Web 表单时使用,表单数据会按照 name1=value1&name2=value2 键值对形式进行编码。

# in python2 不考虑编码

import urllib # In Python 3 urllib.parse

import urllib2 # In Python 3 urllib.request

# POST请求的目标URL

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"

headers={"User-Agent": "Mozilla...."}

formdata = { # form 请求需要data 参数

"type":"AUTO",

"i":"i love python",

"doctype":"json",

"xmlVersion":"1.8",

"keyfrom":"fanyi.web",

"ue":"UTF-8",

"action":"FY_BY_ENTER",

"typoResult":"true"

}

data = urllib.urlencode(formdata) # 将字典转换成 key = value 格式

request = urllib2.Request(url, data = data, headers = headers)

response = urllib2.urlopen(request)

print response.read()

异步Ajax 请求处理:

url: 找到ajax 请求的url

返回内容:一般是JSON格式文件

查询参数:将Querry string 放到 data 里面

如:获取豆瓣电影剧情排行,通过修改start 和limit 的值,来加载不同的数据

python 2

#coding:utf-8

# in Python 2 不考虑编码测试通过

import urllib,urllib2

url = 'https://movie.douban.com/j/chart/top_list?type=11&interval_id=100:90&action='

formdata = {

'start':"0",

'limit':"20",

}

data = urllib.urlencode(formdata)

headers = {

'User-Agent':"Mozilla/5.0 (X11; Ubuntu; Lin… Gecko/20100101 Firefox/54.0'

}

request = urllib2.Request(url,data=data,headers=headers)

response = urllib2.urlopen(request)

json = response.read()

print json

python 3 注意转码

# in Python 3

import urllib.request

import urllib.parse

url = 'https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action='

formdata ={

'start':0,

'limit':20,

}

data = urllib.parse.urlencode(formdata).encode('utf-8') # 注意转码

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'

}

req = urllib.request.Request(url,data=data,headers=headers)

res = urllib.request.urlopen(req)

json = res.read().decode('utf-8') # 注意转码

print(json)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值