爬蟲004

首先給大家道歉聋亡,很長一段時間沒有寫文章了。

今天我們繼續(xù)學(xué)習(xí)爬蟲的課程喜鼓,之前我們接觸了urllib副砍,urllib2的方法應(yīng)用。其實(shí)在現(xiàn)在的市場上颠通,urllib的方法已經(jīng)很少使用,但是作為新手入門是個很好的切入點(diǎn)膀懈,為學(xué)習(xí)之后的知識點(diǎn)做鋪墊顿锰。客氣話少說,直接開擼硼控。

Requests: 讓HTTP為人類服務(wù)

Requests 唯一的一個非轉(zhuǎn)基因的 Python HTTP 庫刘陶,人類可以安全享用。

警告:非專業(yè)人員使用其他 HTTP 庫會導(dǎo)致危險(xiǎn)的副作用牢撼,其中包括:安全缺陷癥匙隔、冗余代碼癥、重新發(fā)明輪子癥熏版、啃文檔癥纷责、抑郁、頭疼撼短、甚至死亡(如有生命危險(xiǎn)再膳,概不負(fù)責(zé))。諾曲横,這就是 Requests 的威力喂柒,當(dāng)然這也是python庫的威力(python庫是最多的,其他語言無法比擬的)禾嫉。

ok灾杰,讓我們先看一下Requests的簡單案例:

import requests

print(requests.get("http://www.baidu.com").text)

上面簡寫的代碼就可以完成爬取百度源碼的任務(wù),是不是超乎你的想象熙参。下面就讓我們開水學(xué)習(xí)requests艳吠。

一、安裝requests

我們是在windows下面運(yùn)行尊惰,按Ctrl+R打開命令行讲竿,輸入cmd回車
726.png
之后在命令行輸入pip install requests。稍等片刻弄屡,就可以肆無忌憚的使用這個庫题禀。

二、requests的使用

1膀捷、requests的各種請求方法

import requests

requests.get("http://www.baidu.com")
requests.post("http://www.baidu.com")
requests.delete("http://www.baidu.com")
requests.put("http://www.baidu.com")
requests.head("http://www.baidu.com")
requests.options("http://www.baidu.com")

1.1迈嘹、GET請求

1.1.1無參數(shù)GET請求
import requests

response = requests.get("http://www.baidu.com")

print(response.text)

向url發(fā)送請求,得到響應(yīng)數(shù)據(jù)全庸,在上述例子中g(shù)et方法里面只有url參數(shù)秀仲。

1.1.2、帶參數(shù)GET請求
  • 1壶笼、請求參數(shù)在url中
比如神僵,我們在百度搜索框輸入黃鸝,想要得到搜索后的數(shù)據(jù)
import requests

response = requests.get("http://www.baidu.com/s?ie=utf-8&wd=黃鸝")

print(response.text)
OK覆劈,這就是把參數(shù)直接放入url中保礼。
  • 2沛励、請求體包含參數(shù)
首先先將參數(shù)包含在dict中,發(fā)起請求參數(shù)時param參數(shù)指定為dict炮障。
import requests

param = {
    "wd": "黃鸝"
}

response = requests.get("http://www.baidu.com/s?", params = param)

print(response.text)
結(jié)果同上目派,上述就可以得到我們想要的數(shù)據(jù)

1.2 POST請求

1.2.1 發(fā)送表單格式的數(shù)據(jù)
import requests

param = {
    "wd": "黃鸝"
}

response = requests.post("http://www.baidu.com/s?", data = param)

print(response.text)
1.2.2 發(fā)送JSON數(shù)據(jù)
import requests, json

param = {
    "wd": "黃鸝"
}

response = requests.post("http://www.baidu.com/s?", data = json.dumps(param))

print(response.text)
1.2.3 發(fā)送文件數(shù)據(jù)
import requests, json

file = {
    "file": open("huangliniao.jpg", "rb")
}

response = requests.post("http://image.baidu.com/?fr=shitu",files = file)

print(response.text)

1.3 獲取數(shù)據(jù)的格式

import requests

response = requests.get("http://httpbin.org/get")
#輸出文本數(shù)據(jù)
print(response.text)
#輸出二進(jìn)制數(shù)據(jù)
print(response.content)
#輸出json數(shù)據(jù)
print(response.json())
舉個栗子(爬取劉亦菲圖片并保存到本地)
import requests

response = requests.get("http://i.shangc.net/2017/1231/20171231023951903.jpg")

print(response.content)

with open("liuyifei.jpg", "wb") as f:
    f.write(response.content)

1.4 設(shè)置headers

import requests

# 設(shè)置User-Agent瀏覽器信息
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
# 設(shè)置請求頭信息
response = requests.get('http://www.reibang.com/u/d5030633f94a', headers=headers)
#print(response.text)
with open("jianshu.html", "wb") as f:
    f.write(response.content)

1.5 獲取和發(fā)送cookies

1.5.1 獲取有道翻譯cookies值
import requests

response = requests.get("http://fanyi.youdao.com")

for i in response.cookies:
    print(i.name + "--" + i.value)
1.5.2 發(fā)送cookies到 有道翻譯
import requests

url = "http://fanyi.youdao.com"
cookies = {"i.name":"i.value"}
response1 = requests.get(url = url, cookies = cookies)
print(response1.text)

當(dāng)然上述兩段代碼可以在同一個文件下運(yùn)行

1.6 session會話保存

import requests

session = requests.Session()
session.get('http://httpbin.org/cookies/set/number/12345')
response = session.get('http://httpbin.org/cookies')
print(response.text)

1.7 設(shè)置代理

1.7.1 普通代理
import requests

proxies = {
    "http": "http://127.0.0.1:9743",
    "https": "https://127.0.0.1:9743",
}

response = requests.get("https://www.taobao.com", proxies=proxies)
print(response.read())
1.7.2 賬號密碼代理
import requests

proxies = {
    "http": "http://user:password@127.0.0.1:9743/",
}
response = requests.get("https://www.taobao.com", proxies=proxies)
print(response.read())
1.7.3 設(shè)置socks代理
import requests

proxies = {
    'http': 'socks5://127.0.0.1:9742',
    'https': 'socks5://127.0.0.1:9742'
}
response = requests.get("https://www.taobao.com", proxies=proxies)
print(response.status_code)

status_code 的意思是狀態(tài)碼,表示相應(yīng)的狀態(tài)

1.8 異常處理

import requests
from requests.exceptions import ReadTimeout, ConnectionError, RequestException

try:
    response = requests.get("http://www.baidu.com", timeout=0.5)
    print(response.status_code)
except ReadTimeout:
    # 超時異常
    print('Timeout')
except ConnectionError:
    # 連接異常
    print('Connection error')
except RequestException:
    # 請求異常
    print('Error')

課堂小作業(yè)胁赢,用requests爬取上節(jié)課url企蹭。

書寫不易,小哥哥小姐姐留個贊或關(guān)注智末。3Q

看了我的文谅摄,就是我的人。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吹害,一起剝皮案震驚了整個濱河市螟凭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌它呀,老刑警劉巖螺男,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纵穿,居然都是意外死亡下隧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門谓媒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淆院,“玉大人,你說我怎么就攤上這事句惯⊥帘纾” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵抢野,是天一觀的道長拷淘。 經(jīng)常有香客問我,道長指孤,這世上最難降的妖魔是什么启涯? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮恃轩,結(jié)果婚禮上结洼,老公的妹妹穿的比我還像新娘。我一直安慰自己叉跛,他們只是感情好松忍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筷厘,像睡著了一般鸣峭。 火紅的嫁衣襯著肌膚如雪伟桅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天叽掘,我揣著相機(jī)與錄音,去河邊找鬼玖雁。 笑死更扁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赫冬。 我是一名探鬼主播浓镜,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼劲厌!你這毒婦竟也來了膛薛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤补鼻,失蹤者是張志新(化名)和其女友劉穎哄啄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體风范,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咨跌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了硼婿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锌半。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寇漫,靈堂內(nèi)的尸體忽然破棺而出刊殉,到底是詐尸還是另有隱情,我是刑警寧澤州胳,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布记焊,位于F島的核電站,受9級特大地震影響陋葡,放射性物質(zhì)發(fā)生泄漏亚亲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一腐缤、第九天 我趴在偏房一處隱蔽的房頂上張望捌归。 院中可真熱鬧,春花似錦岭粤、人聲如沸惜索。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巾兆。三九已至猎物,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間角塑,已是汗流浹背蔫磨。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留圃伶,地道東北人堤如。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像窒朋,于是被迫代替她去往敵國和親搀罢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容