最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的requests網(wǎng)絡(luò)編程包使用教程

 更新時(shí)間:2016年07月11日 16:29:28   作者:Kevin_Yang  
requests包為Python擴(kuò)展了各種基于HTTP的網(wǎng)絡(luò)數(shù)據(jù)操作功能,包括各種請(qǐng)求與session和cookie等的追加,very強(qiáng)大,下面我們就來(lái)看一下Python的requests網(wǎng)絡(luò)編程包使用教程

早就聽(tīng)說(shuō)requests的庫(kù)的強(qiáng)大,只是還沒(méi)有接觸,今天接觸了一下,發(fā)現(xiàn)以前使用urllib,urllib2等方法真是太搓了……
這里寫(xiě)些簡(jiǎn)單的使用初步作為一個(gè)記錄


一、下載

官方項(xiàng)目頁(yè): https://pypi.python.org/pypi/requests/#downloads
可以從上面直接下載。

二、發(fā)送無(wú)參數(shù)的get請(qǐng)求

>>> r = requests.get('http://httpbin.org/get')
>>> print r.text
{
 "args": {}, 
 "headers": {
  "Accept": "*/*", 
  "Accept-Encoding": "gzip, deflate", 
  "Connection": "close", 
  "Host": "httpbin.org", 
  "User-Agent": "python-requests/2.3.0 CPython/2.6.6 Windows/7", 
  "X-Request-Id": "8a28bbea-55cd-460b-bda3-f3427d66b700"
 }, 
 "origin": "124.192.129.84", 
 "url": "http://httpbin.org/get"
}

三、發(fā)送帶參數(shù)的get請(qǐng)求,將key與value放入一個(gè)字典中,通過(guò)params參數(shù)來(lái)傳遞,其作用相當(dāng)于urllib.urlencode

 >>> import requests
>>> pqyload = {'q':'楊彥星'}
>>> r = requests.get('http://www.so.com/s',params = pqyload)
>>> r.url
u'http://www.so.com/s?q=%E6%9D%A8%E5%BD%A6%E6%98%9F'

四、發(fā)送post請(qǐng)求,通過(guò)data參數(shù)來(lái)傳遞,

 >>> payload = {'a':'楊','b':'hello'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print r.text
{
 "args": {}, 
 "data": "", 
 "files": {}, 
 "form": {
  "a": "\u6768", 
  "b": "hello"
 }, 
 "headers": {
  "Accept": "*/*", 
  "Accept-Encoding": "gzip, deflate", 
  "Connection": "close", 
  "Content-Length": "19", 
  "Content-Type": "application/x-www-form-urlencoded", 
  "Host": "httpbin.org", 
  "User-Agent": "python-requests/2.3.0 CPython/2.6.6 Windows/7", 
  "X-Request-Id": "c81cb937-04b8-4a2d-ba32-04b5c0b3ba98"
 }, 
 "json": null, 
 "origin": "124.192.129.84", 
 "url": "http://httpbin.org/post"
}
>>>

可以看到,post參數(shù)已經(jīng)傳到了form里,data不光可以接受字典類(lèi)型的數(shù)據(jù),還可以接受json等格式

>>> payload = {'a':'楊','b':'hello'}
>>> import json
>>> r = requests.post('http://httpbin.org/post', data=json.dumps(payload))

五、發(fā)送文件的post類(lèi)型,這個(gè)相當(dāng)于向網(wǎng)站上傳一張圖片,文檔等操作,這時(shí)要使用files參數(shù)

>>> url = 'http://httpbin.org/post'
>>> files = {'file': open('touxiang.png', 'rb')}
>>> r = requests.post(url, files=files)

定制headers,使用headers參數(shù)來(lái)傳遞

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

 
六、響應(yīng)內(nèi)容
響應(yīng)狀態(tài)碼:

r = requests.get('http://httpbin.org/get')
print r.status_code

響應(yīng)頭:
 

>>> print r.headers
{'content-length': '519', 'server': 'gunicorn/18.0', 'connection': 'keep-alive', 'date': 'Sun, 15 Jun 2014 14:19:52 GMT', 'access-control-allow-origin': '*', 'content-type': 'application/json'}

也可以取到這個(gè)個(gè)別的響應(yīng)頭用來(lái)做一些判斷,這里的參數(shù)是不區(qū)分大小寫(xiě)的

r.headers[‘Content-Type']
r.headers.get(‘Content-Type')

響應(yīng)內(nèi)容,前面已經(jīng)在應(yīng)用了:

r.text
r.content

 
七、獲取響應(yīng)中的cookies

>>> r = requests.get('http://www.baidu.com')
>>> r.cookies['BAIDUID']
'D5810267346AEFB0F25CB0D6D0E043E6:FG=1'

也可以自已定義請(qǐng)求的COOKIES

>>> url = 'http://httpbin.org/cookies'
>>> cookies = {'cookies_are':'working'}
>>> r = requests.get(url,cookies = cookies)
>>> 
>>> print r.text
{
 "cookies": {
  "cookies_are": "working"
 }
}
>>>

cookies還有很多,因?yàn)槟壳拔乙策€不是很多,以后再擴(kuò)充吧

八、使用timeout參數(shù)設(shè)置超時(shí)時(shí)間

>>> requests.get('http://github.com', timeout=1) 
<Response [200]>

如果將時(shí)間設(shè)置成非常小的數(shù),如

requests.get('http://github.com', timeout=0.001)

,那么如果在timeout的時(shí)間內(nèi)沒(méi)有連接,那么將會(huì)拋出一個(gè)Timeout的異常

九、訪問(wèn)中使用session
先初始化一個(gè)session對(duì)象,

s = requests.Session() 

然后使用這個(gè)session對(duì)象來(lái)進(jìn)行訪問(wèn),r = s.post(url,data = user)
以下通過(guò)訪問(wèn)人人網(wǎng)來(lái)獲取首頁(yè)中的最近來(lái)訪問(wèn),然后再訪問(wèn)查看更多的來(lái)訪來(lái)讀取更多的最近來(lái)訪
更多的來(lái)訪就是以帶session的訪問(wèn)http://www.renren.com/myfoot.do

 #coding:utf-8
import requests
import re
url = r'http://www.renren.com/ajaxLogin'
user = {'email':'email','password':'pass'}
s = requests.Session()
r = s.post(url,data = user)
html = r.text
visit = []
first = re.compile(r'</span><span class="time-tip first-tip"><span class="tip-content">(.*?)</span>')
second = re.compile(r'</span><span class="time-tip"><span class="tip-content">(.*?)</span>')
third = re.compile(r'</span><span class="time-tip last-second-tip"><span class="tip-content">(.*?)</span>')
last = re.compile(r'</span><span class="time-tip last-tip"><span class="tip-content">(.*?)</span>')
visit.extend(first.findall(html))
visit.extend(second.findall(html))
visit.extend(third.findall(html))
visit.extend(last.findall(html))
for i in visit:
  print i
print '以下是更多的最近來(lái)訪'
vm = s.get('http://www.renren.com/myfoot.do')
fm = re.compile(r'"name":"(.*?)"')
visitmore = fm.findall(vm.text)
for i in visitmore:
  print i

2016711162503928.png (448×539)

十、requests-cookies
Cookies就像字典一樣儲(chǔ)存了各個(gè)項(xiàng)的值并保存起來(lái), 例如我們的用戶(hù)名, 密碼, 登錄信息等都可以保存起來(lái). 當(dāng)網(wǎng)頁(yè)再次被加載時(shí)可以從cookies中找到相關(guān)的信息并從而免除再次輸入賦值的過(guò)程.
在requests中使用get等請(qǐng)求時(shí)同樣可以賦予cookies信息. 例如我們從瀏覽器中獲取某次網(wǎng)頁(yè)加載時(shí)請(qǐng)求的cookies, 可以同樣賦予requests再次使用.
requests請(qǐng)求時(shí)加入cookies={key:value}參數(shù)即可傳遞cookies.

import requests
url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')

r = requests.get(url, cookies=cookies)
r.text
#'{"cookies": {"cookies_are": "working"}}'

查詢(xún)某次請(qǐng)求的cookies很簡(jiǎn)單, 就像獲得headers一樣使用cookies屬性即可:

url = 'http://example.com/some/cookie/setting/url'
r = requests.get(url)

r.cookies['example_cookie_name']
# 'example_cookie_value'

以下函數(shù)可以分解瀏覽器獲得的cookies字符串到一個(gè)字典,從而幫助我們模擬requests請(qǐng)求.

def browsercookiesdict(s):
 '''Covert cookies string from browser to a dict'''
 ss=s.split(';')
 outdict={}
 for item in ss:
 i1=item.split('=',1)[0].strip()
 i2=item.split('=',1)[1].strip()
 outdict[i1]=i2
 return outdict

相關(guān)文章

  • Python的string模塊中的Template類(lèi)字符串模板用法

    Python的string模塊中的Template類(lèi)字符串模板用法

    通過(guò)string.Template我們可以為Python定制字符串的替換標(biāo)準(zhǔn),這里我們就來(lái)通過(guò)示例解析Python的string模塊中的Template類(lèi)字符串模板用法:
    2016-06-06
  • Python入門(mén)教程(八)PythonCasting用法

    Python入門(mén)教程(八)PythonCasting用法

    這篇文章主要介紹了Python入門(mén)教程(八)PythonCasting用法,Python是一門(mén)非常強(qiáng)大好用的語(yǔ)言,也有著易上手的特性,本文為入門(mén)教程,需要的朋友可以參考下
    2023-04-04
  • 詳解pandas DataFrame的查詢(xún)方法(loc,iloc,at,iat,ix的用法和區(qū)別)

    詳解pandas DataFrame的查詢(xún)方法(loc,iloc,at,iat,ix的用法和區(qū)別)

    這篇文章主要介紹了詳解pandas DataFrame的查詢(xún)方法(loc,iloc,at,iat,ix的用法和區(qū)別),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python用glob模塊匹配路徑的方法詳解

    python用glob模塊匹配路徑的方法詳解

    這篇文章主要介紹了python如何用glob模塊匹配路徑,glob模塊是Python的一個(gè)標(biāo)準(zhǔn)庫(kù),用于在文件系統(tǒng)中查找文件名匹配特定模式的文件路徑,需要的朋友可以參考下
    2024-02-02
  • python3實(shí)現(xiàn)隨機(jī)數(shù)

    python3實(shí)現(xiàn)隨機(jī)數(shù)

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)隨機(jī)數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python之Django自動(dòng)化資產(chǎn)掃描的實(shí)現(xiàn)

    python之Django自動(dòng)化資產(chǎn)掃描的實(shí)現(xiàn)

    這篇文章主要介紹了python之Django自動(dòng)化資產(chǎn)掃描的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Selenium啟動(dòng)Chrome時(shí)配置選項(xiàng)詳解

    Selenium啟動(dòng)Chrome時(shí)配置選項(xiàng)詳解

    這篇文章主要介紹了Selenium啟動(dòng)Chrome時(shí)配置選項(xiàng)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Django中create和save方法的不同

    Django中create和save方法的不同

    這篇文章主要給大家介紹了關(guān)于Django中create和save方法的不同之處,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 對(duì)python多線程SSH登錄并發(fā)腳本詳解

    對(duì)python多線程SSH登錄并發(fā)腳本詳解

    今天小編就為大家分享一篇對(duì)python多線程SSH登錄并發(fā)腳本詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python中三個(gè)不可思議的返回功能分享

    Python中三個(gè)不可思議的返回功能分享

    這篇文章主要給大家介紹了Python中三個(gè)不可思議的返回功能,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01

最新評(píng)論

侯马市| 准格尔旗| 汉沽区| 区。| 扬中市| 金平| 柞水县| 玉山县| 丹棱县| 苏尼特左旗| 含山县| 榆社县| 沙坪坝区| 息烽县| 娄底市| 家居| 禹州市| 诏安县| 酒泉市| 富平县| 房山区| 九江市| 南郑县| 磐石市| 图木舒克市| 成都市| 太原市| 枣庄市| 兴仁县| 久治县| 上虞市| 古田县| 太和县| 龙海市| 无棣县| 惠安县| 平湖市| 磴口县| 永平县| 宁波市| 榆社县|