Python 基础网络请求

人生苦短 我用python

开始愉快的享(代)受(码)时间:

urllib 请求:

1) :<get 请求>

  • Urllib是python内置的HTTP请求库
  • response 响应可调用 read() 、readinto() 、getheader(name) 、 getheaders() 、 fileno() 等函数
    和 msg 、 version 、 status 、reason 、debuglevel 、 closed 等属性
from urllib import request
# import urllib.request 或者这样写

url = 'http://www.baidu.com'
response = request.urlopen(url)

#print(response.read()) # 返回二进制形式的响应内容
print(type(response.read().decode('utf-8'))) #  读取网页内容 将二进制内容按照utf-8格式解码 生成字符串格式

2): <post请求>

传参: data 参数是可选的,如果要添加 data ,它要是字节流编码格式的内容,即 bytes 类型,通过 bytes() 函数可以进行转化,另外如果你传递了这个 data 参数,它的请求方式就不再是 GET 方式请求,而是 POST

    # coding=utf-8  
    import urllib.parse  
    import urllib.request  

    data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding=  
    'utf8')  
    response = urllib.request.urlopen('http://httpbin.org/post', dat  
    a=data)  
    print(response.read())  

    #  urllib.parse.urlencode() 方法来将参数字典转化为字符串

3):设置添加请求headers <Request>

  from urllib import request,parse  
  url = "http://httpbin.org/post"  
  headers = {  
      #伪装一个火狐浏览器  
      "User-Agent":'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',  
      "host":'httpbin.org'  
  }  
  dict = {  
      "name":"Germey"  
  }  
  data = bytes(parse.urlencode(dict),encoding="utf8")  
  req=request.Request(url=url,data=data,headers=headers,method="POST")  # 利用更强大的 Request 类来构建一个请求
  response = request.urlopen(req)  
  print(response.read().decode("utf-8")) 

  # 也可以通过更加灵活的方式添加headers   如:
  # req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
  # req.add_header('Referer', 'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F')


requests请求:

requests 是一个python的第三方网络请求库 安装方式: < pip install requests>

  • 1):<get请求>

<基本get>

import requests
 
url = 'https://www.baidu.com/'
response = requests.get(url)

<带参数的get>

import requests
 
url = 'http://httpbin.org/get'
data = {
    'name':'zhangsan',
    'age':'25'
}
response = requests.get(url,params=data)
print(response.url)  #  请求地址
print(response.text) # 字符串数据
print(response.content) #  二进制数据

print(s.headers)  # 响应头
print(response.request.headers) # 请求头
  • 2): <post请求>

通过post把数据提交到url地址,等同于一字典的形式提交form表单里面的数据

import requests
 
url = 'http://httpbin.org/post'
data = {
    'name':'jack',
    'age':'23'
    }
response = requests.post(url,data=data)
print(response.text)

很多时候你想要发送的数据并非编码为表单形式的。如果你传递一个 string 而不是一个dict ,那么数据会被直接发布出去。

 url = '[https://api.github.com/some/endpoint](https://api.github.com/some/endpoint)'  
 data_dict= {'some': 'data'}

 r = requests.post(url,data=json.dumps(data_dict))
或者
 r = requests.post(url, json=data_dict)

  • 3): <json数据>

requests中 <response.json()> 方法等同于 <json.loads(response.text)>方法

import requests
import json
 
response = requests.get("http://httpbin.org/get")
print(type(response.text))
print(response.json())
print(json.loads(response.text))
print(type(response.json())
  • 高级操作

session,自动保存cookies,可以设置请求参数,下次请求自动带上请求参数

import requests
headers = {
    'name': 'zhangsan',
    'age': '18'
}
# response = requests.get('http://httpbin.org/cookies/set/sessioncookie/123456789', headers=headers)

s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
response = s.get('http://httpbin.org/cookies', headers=headers)

print(response.text)  # 响应内容
print(s.headers)  # 响应头
print(response.request.headers) # 请求头

打印结果:
# {"cookies":{"sessioncookie":"123456789"}}
# {'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
# {'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'name': 'zhangsan', 'age': '18', 'Cookie': 'sessioncookie=123456789'}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容