httpx的使用


httpx的使用

requests庫的已經可以爬取大多數網站的數據,但是對於一些強制使用http/2.0協議訪問的網站requests庫是無能為力的,這時就需要使用httpx庫

import requests

url = 'https://spa16.scrape.center/'
respond = requests.get(url)
print(respond.text)
--------------------------
輸出結果:
http.client.RemoteDisconnected: Remote end closed connection without response
raise RemoteDisconnected("Remote end closed connection without"
······

https://spa16.scrape.center/這個網站是強制使用http/2.0協議的,使用requests庫的方法進行訪問出錯

1.httpx的基本使用

安裝方法:使用pip3來進行安裝

pip3 install httpx

除此之外還需安裝:

pip3 install 'httpx[http2]'

這樣就既安裝了httpx也安裝了http/2.0的支持模塊

httpx的用法與requests庫的用法有很多相似之處

import httpx

url = 'https://spa16.scrape.center/'
client = httpx.Client(http2=True)
response = client.get(url)
print(response.text)

-----------------------
輸出結果:
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=no-referrer><link rel=icon href=/favicon.ico><title>Scrape | Book</title><link href=/css/chunk-50522e84.e4e1dae6.css rel=prefetch><link href=/css/chunk-f52d396c.4f574d24.css rel=prefetch><link href=/js/chunk-50522e84.6b3e24aa.js rel=prefetch><link href=/js/chunk-f52d396c.f8f41620.js rel=prefetch><link href=/css/app.ea9d802a.css rel=preload as=style><link href=/js/app.b93891e2.js rel=preload as=script><link href=/js/chunk-vendors.a02ff921.js rel=preload as=script><link href=/css/app.ea9d802a.css rel=stylesheet></head><body><noscript><strong>We're sorry but portal doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/js/chunk-vendors.a02ff921.js></script><script src=/js/app.b93891e2.js></script></body></html>
  • httpx默認是使用http/1.0協議進行訪問的,如果訪問使用http/2.0協議的網站,就需要手動聲明一下使用http/2.0client = httpx.Client(http2=True)
  • httpx和requests有很多相似的API,因此get、post等方法在使用時二者是類似的

2.Client對象

with httpx.Client(http2=True) as client:
    response = client.get('https://spa16.scrape.center/')
    print(response)
    print(response.http_version)
  • httpx的client對象官方比較推薦的是使用with as方式
  • httpx.Client()的括號內可以添加http2、header等參數來對網站進行訪問
  • 變量response的http_version屬性是requests內不存在的屬性,代表着http協議版本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM