爬蟲(chóng)技術(shù)-使用Requests抓取網(wǎng)頁(yè)內(nèi)容

requests

實(shí)現(xiàn)爬蟲(chóng)第一步:數(shù)據(jù)抓取谈宛。

不知道從什么時(shí)候鸽照,貌似談到Python技術(shù)户秤, 必談爬蟲(chóng)码秉。

講到爬蟲(chóng)也不得不說(shuō)到Python

Python這門(mén)語(yǔ)言對(duì)抓取網(wǎng)頁(yè)有什么相關(guān)的技術(shù)方案呢。

那本文就介紹如何實(shí)現(xiàn)抓取網(wǎng)頁(yè)內(nèi)容:RequestsHTTP庫(kù)的使用鸡号。

有了好用的工具转砖,就可以愉快的搞事情啦。

安裝Requests

pip方式安裝

pip install requests

源碼安裝

git clone git://github.com/kennethreitz/requests.git

Requests使用

來(lái)感受下Requests如何使用

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

上面是官方文檔給出的示例鲸伴。代碼很直觀府蔗,相信大家能看明白。

  • response.get方法: HTTP GET方式請(qǐng)求URL

  • r.status_code 響應(yīng)的HTTP狀態(tài)碼

  • r.headers :HTTP頭信息

  • r.encoding :編碼格式

  • r.text 網(wǎng)頁(yè)內(nèi)容

下面將通過(guò)請(qǐng)求汞窗、響應(yīng)的過(guò)程分別介紹Requests相應(yīng)的方法姓赤。

請(qǐng)求

導(dǎo)入模塊

import requests 

GET 請(qǐng)求:

r = requests.get('https://github.com/timeline.json')

POST 請(qǐng)求

r = requests.post("http://httpbin.org/post")

POST 上傳

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

其它HTTP方法

r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")

攜帶參數(shù)

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)

import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))

設(shè)置超時(shí)

r = requests.get('https://github.com', timeout=5)

禁止重定向

r = requests.get('http://github.com', allow_redirects=False)

設(shè)置請(qǐng)求頭

url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)

設(shè)置代理

import requests

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)

發(fā)送Cookie

url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')

r = requests.get(url, cookies=cookies)
r.text
'{"cookies": {"cookies_are": "working"}}'
import requests
params = {'username': 'Ryan', 'password': 'password'}
r = requests.post("http://pythonscraping.com/pages/cookies/welcome.php", params) print("Cookie is set to:")
print(r.cookies.get_dict())
print("-----------")
print("Going to profile page...")
r = requests.get("http://pythonscraping.com/pages/cookies/profile.php",
                      cookies=r.cookies)
print(r.text)

保持回話

import requests
s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")

print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'

import requests
session = requests.Session()
params = {'username': 'username', 'password': 'password'}
s = session.post("http://pythonscraping.com/pages/cookies/welcome.php", params) print("Cookie is set to:")
print(s.cookies.get_dict())
print("-----------")
print("Going to profile page...")
s = session.get("http://pythonscraping.com/pages/cookies/profile.php") print(s.text)

忽略SSL證書(shū)驗(yàn)證

requests.get('https://kennethreitz.com', verify=False)

響應(yīng)內(nèi)容

狀態(tài)碼

r = requests.get('http://httpbin.org/get')
>>> r.status_code

URL

r.url

響應(yīng)頭

r.headers
r.headers['Content-Type']
r.headers.get('content-type')

Cookie

r.cookies
r.cookies['example_cookie_name']

文本編碼

r.encoding

響應(yīng)內(nèi)容

r.text

二進(jìn)制內(nèi)容

r.content

JSON 響應(yīng)內(nèi)容

r.json()

原始響應(yīng)內(nèi)容

r.raw

以上內(nèi)容就是Requests的常用方法。 還有一些高級(jí)用法沒(méi)列舉仲吏,請(qǐng)查閱官方文檔不铆。

官方文檔


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝌焚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子狂男,更是在濱河造成了極大的恐慌综看,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岖食,死亡現(xiàn)場(chǎng)離奇詭異红碑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)泡垃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)析珊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蔑穴,你說(shuō)我怎么就攤上這事忠寻。” “怎么了存和?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵奕剃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我捐腿,道長(zhǎng)纵朋,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任茄袖,我火速辦了婚禮操软,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宪祥。我一直安慰自己聂薪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布蝗羊。 她就那樣靜靜地躺著藏澳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耀找。 梳的紋絲不亂的頭發(fā)上翔悠,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音涯呻,去河邊找鬼凉驻。 笑死腻要,一個(gè)胖子當(dāng)著我的面吹牛复罐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雄家,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼效诅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起乱投,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咽笼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后戚炫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體剑刑,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年双肤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了施掏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茅糜,死狀恐怖七芭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔑赘,我是刑警寧澤狸驳,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站缩赛,受9級(jí)特大地震影響耙箍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜峦筒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一究西、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧物喷,春花似錦卤材、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至尉辑,卻和暖如春帆精,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隧魄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工卓练, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人购啄。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓襟企,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親狮含。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顽悼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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

  • 目錄: Python網(wǎng)絡(luò)爬蟲(chóng)(一)- 入門(mén)基礎(chǔ)Python網(wǎng)絡(luò)爬蟲(chóng)(二)- urllib爬蟲(chóng)案例Python網(wǎng)絡(luò)爬...
    一只寫(xiě)程序的猿閱讀 12,850評(píng)論 17 68
  • 聲明:本文講解的實(shí)戰(zhàn)內(nèi)容曼振,均僅用于學(xué)習(xí)交流,請(qǐng)勿用于任何商業(yè)用途蔚龙! 一冰评、前言 強(qiáng)烈建議:請(qǐng)?jiān)陔娔X的陪同下,閱讀本文...
    Bruce_Szh閱讀 12,685評(píng)論 6 28
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理木羹,服務(wù)發(fā)現(xiàn)甲雅,斷路器,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 假設(shè)我們需要建造一棟建筑坑填,那么第一步需要做什么工作务荆?——沒(méi)錯(cuò),設(shè)計(jì)和規(guī)劃好地基穷遂,萬(wàn)丈高樓平地起依靠的是穩(wěn)健合理的地...
    汪繼志閱讀 823評(píng)論 0 10
  • 【佛珠的含義~第24顆】 太多時(shí)候函匕,想象一種生活跟真的去過(guò)這種生活是兩回事。如果一樣?xùn)|西你得到了蚪黑,卻覺(jué)得不過(guò)如此盅惜,...
    甘朝武閱讀 2,897評(píng)論 0 0