今天小編分享的是關于python爬蟲的requests庫使用代理,可能大家對python爬蟲并不陌生,或者從來沒有了解過python爬蟲。但是不用擔心,今天小編會以最簡單的描述來講python爬蟲的原理。
建網站原本是網站策劃師、網絡程序員、網頁設計師等,應用各種網絡程序開發技術和網頁設計技術配合操作的協同工作。成都創新互聯專業提供網站設計制作、做網站,網頁設計,網站制作(企業站、成都響應式網站建設公司、電商門戶網站)等服務,從網站深度策劃、搜索引擎友好度優化到用戶體驗的提升,我們力求做到極致!在看這篇文章之前,需要大家掌握的知識技能:
python基礎
html基礎
http狀態碼
讓我們看看這篇文章中有哪些知識點:
get方法
post方法
header參數,模擬用戶
data參數,提交數據
proxies參數,使用代理
進階學習
安裝上requests庫
pip install requests
先來看下幫助文檔,看看requests的介紹,用python自帶的help命令
import requests
help(requests)
output:
Help on package requests:
NAME
requests
DESCRIPTION
Requests HTTP Library
~~~~~~~~~~~~~~~~~~~~~
Requests is an HTTP library, written in Python, for human beings. Basic GET
usage:
>>> import requests
>>> r = requests.get('https://www.python.org')
>>> r.status_code
200
>>> 'Python is a programming language' in r.content
True
... or POST:
>>> payload = dict(key1='value1', key2='value2')
>>> r = requests.post('https://httpbin.org/post', data=payload)
>>> print(r.text)
{
...
"form": {
"key2": "value2",
"key1": "value1"
},
...
}
The other HTTP methods are supported - see `requests.api`. Full documentation
is at .
:copyright: (c) 2017 by Kenneth Reitz.
:license: Apache 2.0, see LICENSE for more details.
這里解釋下,requests庫是由python編寫的對人類友好的http庫,并且舉例了GET與POST的方法。
GET方法
好的,那我們自己來測試下,就以請求百度為例吧,,,(誰讓百度這么耐抗的)
import requests
r = requests.get('https://www.baidu.com')
print(r.status_code) #打印返回的http code
print(r.text) #打印返回結果的text
方便點,截了個圖給大家看,返回的code是200,說明請求正常拉回網頁了。
看下返回的text,有點不對頭,少了一些html標簽,最起碼百度兩個字得有吧。嗯,這是什么原因,,,
相信有些同學已經想到了,是沒有真實模擬用戶的請求,你去爬數據,還不模擬用戶請求,那肯定限制你啊。這個時候需要加一個header參數來搞定,至少要加一個user-agent吧。好,那咋們去找一個ua吧。別百度了,自己動手,豐衣足食。教大家一個辦法,用火狐的開發者工具。
火狐瀏覽器的開發者工具
打開新標簽 —— 按F12——訪問下百度——找到NetWork——隨便點開一個——往下翻——看到ua了吧,復制上。
import requests鄭州人流手術費用 http://mobile.120csjlyy.com/
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
r = requests.get('https://www.baidu.com', headers=headers)
print(r.status_code)
print(r.text)
嗯~~~數據有點多,往下翻翻,這下就正常了嘛,數據都有了。。。PS:不信?可以自己輸出一個html文件,瀏覽器打開看看唄
POST方法
只需要把get改成post就好了
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
r = requests.post('https://www.baidu.com', headers=headers)
print(r.status_code)
print(r.text)
運行下試試看。一般post都是用來提交表單信息的,嗯,這里找一個能提交數據的url,去post下。
用我自己寫的接口(PS:django寫的,挺方便),大家復制過去就好了。注意看代碼,data是要post的數據,post方法里加了一個data參數。
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
# post的數據
data = {"info": "biu~~~ send post request"}
r = requests.post('http://dev.kdlapi.com/testproxy', headers=headers, data=data) #加一個data參數
print(r.status_code)
print(r.text)
截個圖給大家看下,http code 200,body信息說的post成功,并且返回的了我自己的IP信息以及post的數據
使用代理
為什么用代理?一般網站都有屏蔽的限制策略,用自己的IP去爬,被封了那該網站就訪問不了,這時候就得用代理IP來解決問題了。封吧,反正封的不是本機IP,封的代理IP。
既然使用代理,得先找一個代理IP。PS:自己寫個代理服務器太麻煩了,關鍵是我也不會寫啊,,,哈哈哈
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
# post的數據
data = {"info": "biu~~~ send post request"}
# 代理信息,由快代理贊助
proxy = '115.203.28.25:16584'
proxies = {
"http": "http://%(proxy)s/" % {'proxy': proxy},
"https": "http://%(proxy)s/" % {'proxy': proxy}
}
r = requests.post('http://dev.kdlapi.com/testproxy', headers=headers, data=data, proxies=proxies) #加一個proxies參數
print(r.status_code)
print(r.text)
主要方法里加個proxies參數,這就用上代理IP了。
關于python爬蟲之requests庫使用代理就分享到這里了,當然并不止以上和大家分析的辦法,不過小編可以保證其準確性是絕對沒問題的。希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞名稱:python爬蟲之requests庫使用代理-創新互聯
文章起源:http://vcdvsql.cn/article18/iijdp.html
成都網站建設公司_創新互聯,為您提供動態網站、小程序開發、做網站、網站內鏈、手機網站建設、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯