您好,登錄后才能下訂單哦!
使用requests庫怎么實現一個python爬蟲?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
利用pip安裝:pip install requests
基本請求
req = requests.get("https://www.baidu.com/") req = requests.post("https://www.baidu.com/") req = requests.put("https://www.baidu.com/") req = requests.delete("https://www.baidu.com/") req = requests.head("https://www.baidu.com/") req = requests.options(https://www.baidu.com/)
參數是字典,我們可以傳遞json類型的參數:
import requests from fake_useragent import UserAgent#請求頭部庫 headers = {"User-Agent":UserAgent().random}#獲取一個隨機的請求頭 url = "https://www.baidu.com/s"#網址 params={ "wd":"豆瓣" #網址的后綴 } requests.get(url,headers=headers,params=params)
返回了狀態碼,所以我們要想獲取內容,需要將其轉成text:
#get請求 headers = {"User-Agent":UserAgent().random} url = "https://www.baidu.com/s" params={ "wd":"豆瓣" } response = requests.get(url,headers=headers,params=params) response.text
參數也是字典,也可以傳遞json類型的參數:
import requests from fake_useragent import UserAgent headers = {"User-Agent":UserAgent().random} url = "https://www.baidu.cn/index/login/login" #登錄賬號密碼的網址 params = { "user":"1351351335",#賬號 "password":"123456"#密碼 } response = requests.post(url,headers=headers,data=params) response.text
因為這里需要一個登錄的網頁,我這里就隨便用了一個,沒有登錄,所以顯示的結果是這樣的,如果想要測試登錄的效果,請找一個登錄的頁面去嘗試一下。
采集時為避免被封IP,經常會使用代理,requests也有相應 的proxies屬性。
#IP代理 import requests from fake_useragent import UserAgent headers = {"User-Agent":UserAgent().random} url = "http://httpbin.org/get" #返回當前IP的網址 proxies = { "http":"http://yonghuming:123456@192.168.1.1:8088"#http://用戶名:密碼@IP:端口號 #"http":"https://182.145.31.211:4224"# 或者IP:端口號 } requests.get(url,headers=headers,proxies=proxies)
代理IP可以去:快代理去找,也可以去購買。
http://httpbin.org/get。這個網址是查看你現在的信息:
可以通過timeout屬性設置超時時間,一旦超過這個時間還沒獲取到響應內容,就會提示錯誤。
#設置訪問時間 requests.get("http://baidu.com/",timeout=0.1)
ssl驗證。
import requests from fake_useragent import UserAgent #請求頭部庫 url = "https://www.12306.cn/index/" #需要證書的網頁地址 headers = {"User-Agent":UserAgent().random}#獲取一個隨機請求頭 requests.packages.urllib3.disable_warnings()#禁用安全警告 response = requests.get(url,verify=False,headers=headers) response.encoding = "utf-8" #用來顯示中文,進行轉碼 response.text
import requests from fake_useragent import UserAgent headers = {"User-Agent":UserAgent().chrome} login_url = "https://www.baidu.cn/index/login/login" #需要登錄的網頁地址 params = { "user":"yonghuming",#用戶名 "password":"123456"#密碼 } session = requests.Session() #用來保存cookie #直接用session 歹意requests response = session.post(login_url,headers=headers,data=params) info_url = "https://www.baidu.cn/index/user.html" #登錄完賬號密碼以后的網頁地址 resp = session.get(info_url,headers=headers) resp.text
因為我這里沒有使用需要賬號密碼的網頁,所以顯示這樣:
我獲取了一個智慧樹的網頁
#cookie import requests from fake_useragent import UserAgent headers = {"User-Agent":UserAgent().chrome} login_url = "https://passport.zhihuishu.com/login?service=https://onlineservice.zhihuishu.com/login/gologin" #需要登錄的網頁地址 params = { "user":"12121212",#用戶名 "password":"123456"#密碼 } session = requests.Session() #用來保存cookie #直接用session 歹意requests response = session.post(login_url,headers=headers,data=params) info_url = "https://onlne5.zhhuishu.com/onlinWeb.html#/stdetInex" #登錄完賬號密碼以后的網頁地址 resp = session.get(info_url,headers=headers) resp.encoding = "utf-8" resp.text
代碼 | 含義 |
---|---|
resp.json() | 獲取響應內容 (以json字符串) |
resp.text | 獲取相應內容(以字符串) |
resp.content | 獲取響應內容(以字節的方式) |
resp.headers | 獲取響應頭內容 |
resp.url | 獲取訪問地址 |
resp.encoding | 獲取網頁編碼 |
resp.request.headers | 請求頭內容 |
resp.cookie | 獲取cookie |
看完上述內容,你們掌握使用requests庫怎么實現一個python爬蟲的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。