
我一直在撰寫一個 Python 腳本來讀取包含多個 curl 命令的檔案,然后發出 HTTP 請求以獲取回應 (JSON)。
我已經完成了讀取檔案并將其保存到 curl 陣列的步驟。然后我被困在使用該 curl 陣列發出 HTTP 請求以獲取回應的步驟上。是否有任何 Python 庫支持接收 curl 字串作為引數并回傳 HTTP 回應的函式?
我在 StackOverflow 上找到了一種解決方案是使用“子行程”來執行命令,但它的缺點是它需要在運行腳本的機器上安裝“curl”:
def call_curl(curl):
args = shlex.split(curl)
process = subprocess.Popen(args, shell=False,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
return json.loads(stdout.decode('utf-8'))
uj5u.com熱心網友回復:
嘗試使用 uncurl 決議 curl 命令,然后使用 requests 獲取資源:
import uncurl
import requests
ctx = uncurl.parse_context("curl 'https://pypi.python.org/pypi/uncurl' -H 'Accept-Encoding: gzip,deflate,sdch'")
r = requests.request(ctx.method.upper(), ctx.url, data=ctx.data, cookies=ctx.cookies, headers=ctx.headers, auth=ctx.auth, verify=(not ctx.insecure))
r.status_code
請參閱https://docs.python-requests.org/en/latest/user/advanced/#custom-verbs和https://github.com/spulec/uncurl/blob/master/uncurl/api.py#L107了解代碼的作業原理。
uj5u.com熱心網友回復:
如果您使用的是 Python,則根本不需要 cURL,因為 Python 存在 HTTP 客戶端,例如Requests。
uj5u.com熱心網友回復:
其實我同意@ndc85430。無需使用 curl。您可以修改此示例代碼。
import requests as req
HEADERS = {'User-Agent': 'Mozilla/5.0',
'Cookie': 'XXXXXXXXXX'}
GET_APIS_NO_PARAMS = ["/v2?/sample1", "/v2?/sample2" ]
MAIN_URL = 'http://localhost:8000'
for idx, api in enumerate(GET_APIS_NO_PARAMS):
session = req.Session()
resp = session.get(MAIN_URL api, headers=HEADERS)
print(resp.text,resp.status_code)
time.sleep(2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/479753.html
