国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python requests發送post請求的一些疑點

2020-02-23 00:10:04
字體:
來源:轉載
供稿:網友

前言

在Python爬蟲中,使用requests發送請求,訪問指定網站,是常見的做法。一般是發送GET請求或者POST請求,對于GET請求沒有什么好說的,而發送POST請求,有很多朋友不是很清楚,主要是因為容易混淆 POST提交的方式 。今天在微信交流群里,就有朋友遇到了這種問題,特地講解一下。

在HTTP協議中,post提交的數據必須放在消息主體中,但是協議中并沒有規定必須使用什么編碼方式,從而導致了 提交方式 的不同。服務端根據請求頭中的 Content-Type 字段來獲知請求中的消息主體是用何種方式進行編碼,再對消息主體進行解析。具體的編碼方式包括如下:

    application/x-www-form-urlencoded:以form表單形式提交數據,最常見也是大家最熟悉的  application/json :以json串提交數據。

下面使用requests來發送上述三種編碼的POST請求。

1.提交Form表單

requests提交Form表單,一般存在于網站的登錄,用來提交用戶名和密碼。以http://httpbin.org/post 為例,在requests中,以form表單形式發送post請求,只需要將請求的參數構造成一個字典,然后傳給requests.post()的data參數即可。代碼如下:

url = 'http://httpbin.org/post'd = {'key1': 'value1', 'key2': 'value2'}r = requests.post(url, data=d)print r.text

輸出效果如下:

{
"args":{},
"data":"",
"files":{},
"form":{"key1":"value1","key2":"value2"},
"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate",
"Connection":"close",
"Content-Length":"23",
"Content-Type":"application/x-www-form-urlencoded",
"Host":"httpbin.org",
"User-Agent":"python-requests/2.12.3"},
"json":null,
"origin":"113.140.11.122",
"url":http://httpbin.org/post}

httpbin.org網站可以顯示你提交請求的內容,大家注意一下輸出的"Content-Type":"application/x-www-form-urlencoded",證明這是提交Form的方式。大家在登錄一個網站時,可以觀察一下Content-Type是什么。

2.提交json串

對于提交json串,主要是用于發送ajax請求中,動態加載數據。以拼多多網站為例,加載商品的方式為ajax,商品的內容在響應中。

下面把請求頭和請求實體列舉一下:

 

一些初學者根據請求頭寫爬蟲,就會犯requests的使用錯誤。

錯誤寫法

import requests__author__ = 'qiye'__date__ = '2018/5/19 21:59'url = "http://jinbao.pinduoduo.com/network/api/common/goodsList"data ={"pageSize":60,"pageNumber":1,"withCoupon":0,"sortType":0}headers = {  'Content-Type':'application/json; charset=UTF-8',  'Host':'jinbao.pinduoduo.com',  'Origin':'http://jinbao.pinduoduo.com',  'Referer':'http://jinbao.pinduoduo.com/',  'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Mobile Safari/537.36',  'Accept': 'application/json, text/javascript, */*; q=0.01',}r = requests.post(url=url,data =data,headers=headers)print(r.text)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁国市| 仪征市| 旬阳县| 海门市| 基隆市| 米易县| 大石桥市| 武夷山市| 格尔木市| 黎平县| 全南县| 浪卡子县| 浦县| 东山县| 尼勒克县| 巢湖市| 拉萨市| 唐山市| 乐清市| 鄱阳县| 乳山市| 望城县| 宜阳县| 卫辉市| 南阳市| 五常市| 邯郸市| 襄城县| 桦南县| 正安县| 监利县| 同德县| 衡南县| 建宁县| 岑巩县| 肃宁县| 运城市| 开鲁县| 张北县| 宣汉县| 江永县|