您好,登錄后才能下訂單哦!
本篇文章為大家展示了Python爬蟲request模塊如何使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
爬蟲——requests模塊
Requests繼承了urllib.request的所有特性,Requests支持HTTP連接保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自動確定響應內容的編碼,支持國際化的URL和POST數據自動編碼。
相較于urllib.request而言,其使用更加簡潔方便。
基本GET請求(headers參數和parmas參數)
1.最基本的GET請求可以直接用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和查詢參數
如果想添加headers,可以傳入headers參數來增加請求頭中的headers信息。如果要將參數放在url中傳遞,可以利用params參數。
#!/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接收一個字典或者字符串的查詢參數,字典類型自動轉換為url編碼,不需要urlencode() response = requests.get(url = url, params = kw, headers = header) # 打印響應內容,response.text返回的是Unicode格式的數據 print(response.text) # 打印響應內容,response.content返回的是字節流數據 # print(response.content) # 查看完整的url地址 print(response.url) # 查看響應頭部字符編碼 print(response.encoding) # 查看響應碼 print(response.status_code)
使用response.text時,requests會基于HTTP響應的文本編碼自動解碼響應內容,大多數Unicode字符集都能被無縫地解碼。
使用response.content時,返回的是服務器響應數據的原始二進制字節流,可以用來保存圖片等二進制文件。
基本POST討還(data參數)
1.最基本的GET請求可以直接用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數據
對于POST請求來說,我們一般需要為它增加一些參數。那么最基本的傳參方法可以利用data這個參數。
#!/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("請輸入需要翻譯的詞條:") 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參數)
如果需要使用代理,你可以通過為任意請求方法提供proxies參數來配置單個請求:
#!/usr/bin/python3 # -*- coding:utf-8 -*- __author__ = 'mayi' import requests # 根據協議類型,選擇不同的代理 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
如果一個響應中包含了cookie,那么我們可以利用cookies參數拿到:
#!/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對象是一個非常常用的對象,這個對象代表一次用戶會話:從客戶端連接服務器開始,到客戶端瀏覽器與服務器斷開。
會話能讓我們在跨請求時候保持某些參數,比如在同一個Session實例發出的所有請求之間保持cookie。
實現人人網登錄
#!/usr/bin/python3 # -*- coding:utf-8 -*- __author__ = 'mayi' import requests # 創建session對象,用于保存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("請輸入您的賬戶:") password = input("請輸入您的密碼:") data = {"email": email, "password": password} # 發送附帶賬戶密碼的請求,并獲取登錄后的Cookie值,保存在session中 session.post("http://www.renren.com/PLogin.do", data = data) # session中包含了登錄后的Cookie值,可以直接訪問那些需登錄后才能訪問的頁面 response = session.get("http://www.renren.com/413928886/profile") # 打印響應內容 print(response.text)
上述內容就是Python爬蟲request模塊如何使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。