歡迎來到DIVCSS5查找CSS資料與學習DIV CSS布局技術!
  一、什么是requests
 
  Requests是用python語言基于urllib編寫的,采用的是Apache2Licensed開源協議的HTTP庫。
 
  相對于urllib庫(自帶,無需手動安裝)而言,requests庫的使用顯得簡單便捷(本質就是封裝了urllib3)。
 
  官方文檔:http://cn.python-requests.org/zh_CN/latest/
 
  二、requests的安裝
 
  1.電腦運行ctrl+R輸入cmd(命令提示符)
 
  2.運行pipinstallrequests安裝
 
  三、requests庫的使用
 
  在requests庫中,我們常用的是requests.get()和requests.post()
 
  post請求與get請求區別:
 
  1.在客戶端,Get方式在通過URL提交數據,數據在URL中可以看到;POST方式,數據放置在HTMLHEADER內提交。
 
  2.GET方式提交的數據最多只能有1024Byte,而POST則沒有此限制。
 
  3.安全性問題。正如在(1)中提到,使用Get的時候,參數會顯示在地址欄上,而Post不會。所以,如果這些數據是中文數據而且是非敏感數據,那么使用get;如果用戶輸入的數據不是中文字符而且包含敏感數據,那么還是使用post為好。
 
  requests.get()
 
  importrequests
 
  response=requests.get('http://www.baidu.com')#獲取百度的源碼
 
  response.encoding=response.apparent_encoding#程序分析源碼采用的編碼格式
 
  print(response.text)#打印源碼
 
  其實,我們在使用過程中經常需要傳遞一些參數,如百度搜索python,這時我們就可以通過拼接構造URL的方式實現,那么數據會以鍵/值對的形式置于URL中,跟在一個問號的后面。
 
  例如:http://www.baidu.com/s?wd=python中Requests允許你使用params關鍵字參數,以一個字典來提供這些參數。
 
  importrequests
 
  url='http://www.baidu.com/s'
 
  params={
 
  'wd':'python'
 
  }
 
  response=requests.get(url,params=params)#傳入參數
 
  response.encoding=response.apparent_encoding
 
  print(response.url)#返回http://www.baidu.com/s?wd=python
 
  當然,你也可以使用最簡單的拼接
 
  url='http://www.baidu.com/s?wd='+'python'
 
  response=requests.get(url)
 
  print(response.url)#返回http://www.baidu.com/s?wd=python
 
  拓展知識:
 
  你還可以將一個列表作為值傳入:
  importrequests
 
  params={'key1':'value1','key2':['value2','value3']}
 
  r=requests.get('http://httpbin.org/get',params=params)
 
  print(r.url)
 
  #打印的結果是
 
  #http://httpbin.org/get?key1=value1&key2=value2&key2=value3
 
  requests.post()
 
  importrequests
 
  data={
 
  "name":"zhaofan",
 
  "age":23
 
  }
 
  response=requests.post("http://httpbin.org/post",data=data)
 
  print(response.text)
 
  '''
 
  返回
 
  {
 
  "args":{},
 
  "data":"",
 
  "files":{},
 
  "form":{
 
  "age":"23",
 
  "name":"zhaofan"
 
  },
 
  "headers":{
 
  "Accept":"*/*",
 
  "Accept-Encoding":"gzip,deflate",
 
  "Content-Length":"19",
 
  "Content-Type":"application/x-www-form-urlencoded",
 
  "Host":"httpbin.org",
 
  "User-Agent":"python-requests/2.20.0"
 
  },
 
  "json":null,
 
  "origin":,
 
  "url":"https://httpbin.org/post"
 
  }
 
  '''
 
  其他HTTP請求類型:PUT,DELETE,HEAD以及OPTIONS其實都是差不多的用法
 
  r=requests.put('http://httpbin.org/put',data={'key':'value'})
 
  r=requests.delete('http://httpbin.org/delete')
 
  r=requests.head('http://httpbin.org/get')
 
  r=requests.options('http://httpbin.org/get')
 
  四、定制請求頭
 
  網站建立的最終目的是讓人來訪問的,其實幾乎每個網站都是拒絕爬蟲的,因此引出各種各樣的反爬手段,那么網站是靠什么來判定我們是爬蟲的?
 
  方法有很多,其中最普遍的是通過請求頭來判斷。
 
  在發送HTTP請求的時候瀏覽器都會帶上請求頭信息等,如果我們的程序沒有帶上,或者帶上的請求頭信息是錯誤的,也就是不被服務器認可的,那么就會遭到服務器的拒絕!
 
  importrequests
 
  url='http://www.baidu.com/s'
 
  params={
 
  'wd':'python'
 
  }
 
  #請求頭
 
  headers={
 
  'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/73.0.3683.86Safari/537.36',
 
  }
 
  response=requests.get(url,params=params,headers=headers)
 
  此外,我們也可以通過fake_useragent來隨機生成一個請求頭
 
  fromfake_useragentimportUserAgent
 
  us=UserAgent()
 
  print(us.random)#打印隨機生成的請求頭
 
  注意:我們只是加上了User-Agent信息就可以正常訪問了,但是瀏覽器是發送了比我們更多的信息的。如果遇到加上請求頭User-Agent信息也不成功的網站,可以嘗試添加其他請求頭信息。
 
  五、響應狀態碼
 
  importrequests
 
  url='http://www.baidu.com/'
 
  response=requests.get(url)
 
  print(response.status_code)#返回200
 
  相關的響應狀態碼請訪問網友的博客:https://www.cnblogs.com/dekui/p/7801289.html
 
  六、cookie
 
  現在的網站中有這樣的一種網站類型,也就是需要用戶注冊以后,并且登陸才能訪問的網站,或者說在不登錄的情況下不能訪問自己的私有數據,例如微博,微信等。
 
  網站記錄用戶信息的方式就是通過客戶端的Cookie值。例如:當我們在瀏覽器中保存賬號和密碼的同時,瀏覽器在我們的電腦上保存了我們的用戶信息,并且在下次訪問這個頁面的時候就會自動的為我們加載Cookie信息。
 
  在需要登陸的網站中,瀏覽器將Cookie中的信息發送出去,服務器驗證Cookie信息,確認登錄。既然瀏覽器在發送請求的時候帶有Cookie信息,那么我們的程序同樣也要攜帶Cookie信息。
 
  Cookie是當你訪問某個站點或者特定頁面的時候,留存在電腦里的一段文本,它用于跟蹤記錄網站訪問者的相關數據信息,比如:搜索偏好、行為點擊,賬號,密碼等內容。
 
  通常Cookie值信息可以在瀏覽器中復制過來,放到headers中:
 
  headers={
 
  'Accept':'application/json,text/javascript,*/*;q=0.01',
 
  'Accept-Encoding':'gzip,deflate,br',
 
  'Accept-Language':'zh-CN,zh;q=0.9',
 
  'Connection':'keep-alive',
 
  'Content-Length':'26',
 
  'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8',
 
  'Cookie':'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',#瀏覽器中復制
 
  'Host':'www.lagou.com',
 
  'Origin':'https://www.lagou.com',
 
  'Referer':'https://www.lagou.com/jobs/list_Python?labelWords=&fromSearch=true&suginput=',
 
  'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/74.0.3729.157Safari/537.36',
 
  'X-Anit-Forge-Code':'0',
 
  'X-Anit-Forge-Token':'None',
 
  'X-Requested-With':'XMLHttpRequest',
 
  }

如需轉載,請注明文章出處和來源網址:http://www.4389979.live/html/h54925.shtml

河南十一选五大小 体育彩票25选5开奖结果 北京三分彩开奖结果 管家婆四肖三期必中特 股票发行价怎么确定 闲来麻将赚金版官方app 海南体彩环岛赛 大满贯李逵劈鱼 今日股票是否开盘 怎么进入豪利棋牌官方网络 nba在线无插件视