本篇文章為大家展示了Python爬蟲request模塊如何使用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出武漢免費(fèi)做網(wǎng)站回饋大家。
爬蟲——requests模塊
Requests繼承了urllib.request的所有特性,Requests支持HTTP連接保持和連接池,支持使用cookie保持會(huì)話,支持文件上傳,支持自動(dòng)確定響應(yīng)內(nèi)容的編碼,支持國際化的URL和POST數(shù)據(jù)自動(dòng)編碼。
相較于urllib.request而言,其使用更加簡(jiǎn)潔方便。
基本GET請(qǐng)求(headers參數(shù)和parmas參數(shù))
1.最基本的GET請(qǐng)求可以直接用get方法
#!/usr/bin/python3 # -*- coding:utf-8 -*- import requests response = requests.get("http://www.baidu.com/") # 也可以這么寫 # response = requests.request("get", "http://www.baidu.com/")
2.添加headers和查詢參數(shù)
如果想添加headers,可以傳入headers參數(shù)來增加請(qǐng)求頭中的headers信息。如果要將參數(shù)放在url中傳遞,可以利用params參數(shù)。
#!/usr/bin/python3 # -*- coding:utf-8 -*- import requests url = "http://www.baidu.com/s?" kw = {"wd":"爬蟲"} # User-Agent頭 header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'} # params接收一個(gè)字典或者字符串的查詢參數(shù),字典類型自動(dòng)轉(zhuǎn)換為url編碼,不需要urlencode() response = requests.get(url = url, params = kw, headers = header) # 打印響應(yīng)內(nèi)容,response.text返回的是Unicode格式的數(shù)據(jù) print(response.text) # 打印響應(yīng)內(nèi)容,response.content返回的是字節(jié)流數(shù)據(jù) # print(response.content) # 查看完整的url地址 print(response.url) # 查看響應(yīng)頭部字符編碼 print(response.encoding) # 查看響應(yīng)碼 print(response.status_code)
使用response.text時(shí),requests會(huì)基于HTTP響應(yīng)的文本編碼自動(dòng)解碼響應(yīng)內(nèi)容,大多數(shù)Unicode字符集都能被無縫地解碼。
使用response.content時(shí),返回的是服務(wù)器響應(yīng)數(shù)據(jù)的原始二進(jìn)制字節(jié)流,可以用來保存圖片等二進(jìn)制文件。
基本POST討還(data參數(shù))
1.最基本的GET請(qǐng)求可以直接用post方法
#!/usr/bin/python3 # -*- coding:utf-8 -*- import requests response = requests.post("http://www.baidu.com/") # 也可以這么寫 # response = requests.request("post", "http://www.baidu.com/")
2.傳入data數(shù)據(jù)
對(duì)于POST請(qǐng)求來說,我們一般需要為它增加一些參數(shù)。那么最基本的傳參方法可以利用data這個(gè)參數(shù)。
#!/usr/bin/python3 # -*- coding:utf-8 -*- import requests url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null" header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'} word = input("請(qǐng)輸入需要翻譯的詞條:") from_data = { "i":word, "from":"AUTO", "to":"AUTO", "smartresult":"dict", "doctype":"json", "version":"2.1", "keyfrom":"fanyi.wed" } response = requests.post(url = url, data = from_data, headers = header) # print(response.text) print(response.json())
代理(proxies參數(shù))
如果需要使用代理,你可以通過為任意請(qǐng)求方法提供proxies參數(shù)來配置單個(gè)請(qǐng)求:
#!/usr/bin/python3 # -*- coding:utf-8 -*- __author__ = 'mayi' import requests # 根據(jù)協(xié)議類型,選擇不同的代理 proxies = { "http": "http://12.34.56.78:90", "https": "http://21.43.65.87:90" } response = requests.get("http://www.baidu.com/", proxies = proxies) print(response.text)
Cookies和Sission
1.Cookies
如果一個(gè)響應(yīng)中包含了cookie,那么我們可以利用cookies參數(shù)拿到:
#!/usr/bin/python3 # -*- coding:utf-8 -*- __author__ = 'mayi' import requests response = requests.get("http://www.baidu.com/") cookiejar = response.cookies cookiedict = requests.utils.dict_from_cookiejar(cookiejar) print(cookiejar) print(cookiedict)
2.Sission
在requests里,session對(duì)象是一個(gè)非常常用的對(duì)象,這個(gè)對(duì)象代表一次用戶會(huì)話:從客戶端連接服務(wù)器開始,到客戶端瀏覽器與服務(wù)器斷開。
會(huì)話能讓我們?cè)诳缯?qǐng)求時(shí)候保持某些參數(shù),比如在同一個(gè)Session實(shí)例發(fā)出的所有請(qǐng)求之間保持cookie。
實(shí)現(xiàn)人人網(wǎng)登錄
#!/usr/bin/python3 # -*- coding:utf-8 -*- __author__ = 'mayi' import requests # 創(chuàng)建session對(duì)象,用于保存Cookie值 session = requests.session() # User-Agent頭 header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'} # 需要登錄的賬戶和密碼 email = input("請(qǐng)輸入您的賬戶:") password = input("請(qǐng)輸入您的密碼:") data = {"email": email, "password": password} # 發(fā)送附帶賬戶密碼的請(qǐng)求,并獲取登錄后的Cookie值,保存在session中 session.post("http://www.renren.com/PLogin.do", data = data) # session中包含了登錄后的Cookie值,可以直接訪問那些需登錄后才能訪問的頁面 response = session.get("http://www.renren.com/413928886/profile") # 打印響應(yīng)內(nèi)容 print(response.text)
上述內(nèi)容就是Python爬蟲request模塊如何使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。