雖然python的標準庫中的urllib模組已經包含了平常我們使用的大多數功能,但是它的api使用起來讓人感覺不太好,而requests宣傳「http for humans」,說明使用更簡便。
requests使用python語言編寫,基於urllib,但是它比urllib更加方便,可以節約我們大量的工作,完全滿足http測試需求。
安裝:pip install requests
傳送get請求
import requests
#新增header和查詢引數
headers =
#params 接收乙個字典或字串的查詢引數,字典型別自動轉換為url編碼,無需urlencode
kw =
#傳送get請求
response = requests.get(
'',headers=headers,params=kw)
print
(response)
#print
(response.url)
print
(response.text)
#字串形式
print
(response.content)
#位元組流形式
傳送post請求
resp = requests.post(url,data=字典,headers=headers)
使用**
在requests庫中使用**,只要在請求的方法中(get,post)傳遞proxies引數就行
#未使用**
# import requests
# url = ''
# resp = requests.get(url)
# print(resp.text) #"origin": "111.29.161.238"
#使用**
import requests
proxy =
url =
''resp = requests.get(url,proxies=proxy)
print
(resp.text)
#"origin": "182.101.207.11"
requests庫處理cookie
如果在乙個響應中包含了cookie,那麼可以利用cookies屬性拿到這個返回的cookie值
import requests
#requests中獲取cookie
import requests
resp = requests.get(
'')print
(resp.cookies)
print
(resp.cookies.get_dict(
))
requests庫利用session共享cookie
session:使用requests也可以達到共享cookie的目的,那就是requests庫提供的session物件。注意:這裡的session不是web開發中的session,這裡只是乙個會話的物件而已。
#使用requests庫中的session實現共享cookie
import requests
#登入頁面**
post_url =
''post_data =
headers =
sess = requests.session(
)#例項化乙個session物件
sess.post(post_url,post_data,headers=headers)
#登入後sess已經擁有cookie
#個人頁面**
url =
''resp = sess.get(url,headers=headers)
#利用sess共享cookie實現對個人網頁的爬取
print
(resp.text)
通過requests庫處理不被信任的ssl證書
ssl證書:類似於營業執照
在請求的方法中加入verify=false即可
import requests
url =
''resp = requests.get(url,verify=
false
)print
(resp.content.decode(
'utf-8'
))
爬蟲 分布式爬蟲
爬蟲的本質 很多搞爬蟲的總愛吹噓分布式爬蟲,彷彿只有分布式才有逼格,不是分布式簡直不配叫爬蟲,這是一種很膚淺的思想。分布式只是提高爬蟲功能和效率的乙個環節而已,它從來不是爬蟲的本質東西。爬蟲的本質是網路請求和資料處理,如何穩定地訪問網頁拿到資料,如何精準地提取出高質量的資料才是核心問題。分布式爬蟲只...
分布式爬蟲之celery
以爬douban 為例 首先啟動redis,新建檔案crawl douban.py import requests from bs4 import beautifulsoup import time from celery import celery import redis from config...
分布式爬蟲
乙個基於scrapy redis的分布式爬蟲模板,在scrapy redis自帶的example的基礎上進行修改,新增在實際爬取過程中大部分爬蟲可能用到的功能,使的構建分布式爬蟲更加的簡單。scrapy redis windows ubuntu sudo apt get install redis ...