'Python中的Requests模塊,星號和括號'

Python JSON 編程python新視野 2019-09-16
"

requests模塊

官方地址:https://github.com/psf/requests

官方文檔 :https://2.python-requests.org/en/master/

用於http請求的模塊 ,用於網頁數據抓取

七個主要方法

Python資源共享群:626017123

請求頁面

r = requests.get('https://api.github.com/events') #不傳參
#post請求data做為鍵名
r = requests.post('https://httpbin.org/post', data = {'key':'value'})
這兩種是最常 見的,其它不常見的
>>> r = requests.put('https://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('https://httpbin.org/delete')
>>> r = requests.head('https://httpbin.org/get')
>>> r = requests.options('https://httpbin.org/get')
傳參一個字典
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=payload)
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get('https://httpbin.org/get', params=payload)
print(r.url)
結果:key2做為後兩個值的key鍵,用&連接
https://httpbin.org/get?key1=value1&key2=value2&key2=value3

應答Responsse

r = requests.get('https://api.github.com/events')
print(r.text) //網頁對應的內容
print(r.encoding) //編碼格式
print(r.json()) //取得返回的json數據
返回原始套接字內容,要在請求的時候加 stream=True
r = requests.get('https://api.github.com/events', stream=True)
r.raw #<urllib3.response.HTTPResponse object at 0x101194810>
r.raw.read(10) #'\\\\x1f\\\\x8b\\\\x08\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x03'

保存到文件
with open(filename, 'wb') as fd:
for chunk in r.iter_content(chunk_size=128):
fd.write(chunk)

自定義 Headers

get請求的時候用headers做為鍵名

url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)

傳遞json編碼的數據

先導入json模塊,然後用json.dumps轉換字典數據

import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))

上傳文件

用files做為鍵名。

url = 'https://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
r.text

cookie的應用

url = 'http://example.com/some/cookie/setting/url'
r = requests.get(url)
print(r.cookies['key'])
發送cookie到服務器
url = 'https://httpbin.org/cookies'
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
print(r.text)
增加cookie
>>> jar = requests.cookies.RequestsCookieJar()
>>> jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
>>> jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
>>> url = 'https://httpbin.org/cookies'
>>> r = requests.get(url, cookies=jar)
>>> r.text
#'{"cookies": {"tasty_cookie": "yum"}}'
r.history返回重定向的列表

python中的**

(**)將接收到的參數存入一個字典

def foo(**kwargs):
for key, value in kwargs.items():
print("%s=%s" % (key, value))
if __name__ == '__main__':
foo(a=1, b=2, c=3)
輸出結果:
a=1
b=2
c=3

python中的*

把任意長度字符串輸出到元組中

def foo(*kwargs):
print(kwargs)
if __name__ == '__main__':
foo(1,3)
輸出結果:(1, 3)

Python中的各種括號

{}表示字典數據類型

if __name__ == '__main__':
dic = {'jon': 'boy', 'lili"': 'girl'}
print(dic)
結果為:
{'jon': 'boy', 'lili"': 'girl'}

[]表示可變的序列,()是無組,不可變序列

"

相關推薦

推薦中...