python復(fù)習(xí)第14天:靜態(tài)爬蟲之requests


title: python復(fù)習(xí)第14天:靜態(tài)爬蟲之requests
date: 2020-04-05 15:00:24
tags:
- python
- 爬蟲
categories: python復(fù)習(xí)
top: 15


requests模塊詳解

模塊安裝

  • 建議新建一個虛擬環(huán)境后再安裝
conda create -n xxxx python=3.8  # 新建一個虛擬環(huán)境,并且指定python版本
conda activate xxxx    # 激活該虛擬環(huán)境
  • 也可以直接在pycharm中新建一個項目友题,選擇conda虛擬環(huán)境
  • pip或者conda安裝新環(huán)境
  • 具體安裝方法如下:
conda install requests
pip install requests

get請求

  • get請求為http協(xié)議常用請求嗤堰,主要有4部分,請求url,請求頭度宦,請求方法踢匣,請求參數(shù)
  • 下面演示下載百度官網(wǎng)
import requests
url = 'https://www.baidu.com'  # 請求url
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \
    Chrome/80.0.3987.149 Safari/537.36'
}  # 請求頭,從瀏覽器中粘貼過來的
response = requests.get(url, headers=headers)  # 將相應(yīng)放到response變量
print(response)  # response是一個object戈抄,默認(rèn)打印是狀態(tài)碼
"""
<Response [200]>
"""
  • 如果要打印網(wǎng)頁离唬,可以用reponse.text
print(response.text)

response常用屬性與方法

  • response:默認(rèn)顯示狀態(tài)碼

  • response.text:顯示文本內(nèi)容,一般為html或者xml時使用

  • response.content:顯示二進(jìn)制內(nèi)容划鸽,如果是圖片或者不確定編碼方式時使用

  • response.json():顯示json對象输莺,如果是json格式時使用

  • response.url:顯示返回的url,一般和原請求網(wǎng)頁一樣裸诽,觸發(fā)有跳轉(zhuǎn)

  • response.headers:顯示返回頭

  • response.cookies:顯示cookies

get方法加參數(shù)請求

  • 以百度搜索查詢?yōu)槔?/li>
import requests
url = 'https://www.baidu.com/s'  # 請求url
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \
    Chrome/80.0.3987.149 Safari/537.36'
}  # 請求頭嫂用,從瀏覽器中粘貼過來的
params = {
    'ie': 'UTF-8',
    'wd': '你好'
}  # 加入兩個請求參數(shù),可以直接從url中提取
response = requests.get(url, headers=headers, params=params)  # 將相應(yīng)放到response變量
print(response.text)

post請求

  • 當(dāng)網(wǎng)頁提交數(shù)據(jù)丈冬,如登錄嘱函,填寫調(diào)查問卷并提交,都是用post請求
  • post請求用于提交數(shù)據(jù)到服務(wù)器埂蕊,數(shù)據(jù)庫予以儲存或者相應(yīng)新內(nèi)容
  • 以某翻譯網(wǎng)站為例
import requests
url = 'http://fy.iciba.com/ajax.php?a=fy'
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \
    Chrome/80.0.3987.149 Safari/537.36'
}  # 請求頭往弓,從瀏覽器中粘貼過來的
data = {
    'f': 'auto',
    't': 'auto',
    'w': 'hello',
}
response = requests.post(url, headers=headers, data=data)  # 將相應(yīng)放到response變量
print(response)
print(response.json())
"""
<Response [200]>
{'status': 0, 'content': {'ph_en': "h?'l??", 'ph_am': 'h??lo?', 'ph_en_mp3': '',
 'ph_am_mp3': 'http://res.iciba.com/resource/amp3/1/0/5d/41/5d41402abc4b2a76b9719d911017c592.mp3', 
 'ph_tts_mp3': 'http://res-tts.iciba.com/5/d/4/5d41402abc4b2a76b9719d911017c592.mp3', 
'word_mean': ['int. 哈嘍,喂;你好蓄氧,您好;表示問候;打招呼;', 'n. “喂”的招呼聲或問候聲;', 'vi. 喊“喂”;']}}
"""

session會話保持

  • http是無狀態(tài)的函似,沒有記憶性,服務(wù)器通過創(chuàng)建session與cookies而達(dá)到記憶功能匀们。sesssion存服務(wù)器缴淋,cookies存用戶瀏覽器
  • 如果用戶想要通過爬蟲模擬登錄,訪問泄朴,下載功能重抖,就必須要是同一個會話,也就是必須持有相同的cookies
  • 如果需要登錄后才能做很多事情祖灰,那么可以通過requests模塊創(chuàng)建session會話钟沛,這樣就和普通用戶登錄,訪問是一個效果局扶。
  • 以模擬登錄人人網(wǎng)為例:
import requests

url = 'http://www.renren.com/PLogin.do'
data = {
    'email': 'xxxxxx',  # 你的賬號
    'password': 'xxxxxxxx',  # 你的密碼
    'autoLogin': 'true'  # 是否自動登錄
}
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)\
     Chrome/80.0.3987.149 Safari/537.36'
}
s = requests.session()  # 創(chuàng)建session會話
s.post(url, headers=headers, data=data)  # post請求模擬登錄
url2 = 'http://www.renren.com/914644077'  # 自己提取自己的主頁url
response = s.get(url2, headers=headers)  # 嘗試訪問個人主頁
print(response.text)  # 打印網(wǎng)頁內(nèi)容恨统,看看有沒有你的用戶名啥的叁扫,最好就是保存到本地看看對比一下
s.close()  # 關(guān)閉會話

代理訪問

  • 有時候有些網(wǎng)站必須要用代理才能訪問

  • 或者如果你頻繁用一個ip訪問一個網(wǎng)站,容易被封號

  • 所以用代理可以給你換不同的馬甲畜埋,突破反爬封鎖

  • 下面使用代理訪問百度

import requests

url = 'https://www.baidu.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)\
     Chrome/80.0.3987.149 Safari/537.36'
}
proxies = {
    'http': '218.75.102.198:8000'
}
response = requests.get(url, proxies=proxies, headers=headers, timeout=20)  # 20秒連接不成功就超時退出
print(response)
"""
<Response [200]>
"""

AJAX

  • Asynchronous Javascript And XML,即javaScript和xml
  • 通常表現(xiàn)為刷網(wǎng)頁的時候莫绣,只顯示一下部分,當(dāng)你往下瀏覽的時候慢慢給你加載新內(nèi)容
  • 一般ajax請求比較有規(guī)律悠鞍,請求參數(shù)一般為頁碼或者條數(shù)对室,這樣的話可以通過循環(huán)語句批量生成請求參數(shù),實現(xiàn)全部爬取
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咖祭,一起剝皮案震驚了整個濱河市掩宜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌么翰,老刑警劉巖牺汤,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異浩嫌,居然都是意外死亡檐迟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門固该,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锅减,“玉大人糖儡,你說我怎么就攤上這事伐坏。” “怎么了握联?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵桦沉,是天一觀的道長。 經(jīng)常有香客問我金闽,道長纯露,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任代芜,我火速辦了婚禮埠褪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挤庇。我一直安慰自己钞速,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布嫡秕。 她就那樣靜靜地躺著渴语,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昆咽。 梳的紋絲不亂的頭發(fā)上驾凶,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天牙甫,我揣著相機(jī)與錄音,去河邊找鬼调违。 笑死窟哺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的技肩。 我是一名探鬼主播脏答,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亩鬼!你這毒婦竟也來了殖告?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雳锋,失蹤者是張志新(化名)和其女友劉穎黄绩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玷过,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蛙埂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了内地。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窟扑。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖袋马,靈堂內(nèi)的尸體忽然破棺而出初澎,到底是詐尸還是另有隱情,我是刑警寧澤虑凛,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布碑宴,位于F島的核電站,受9級特大地震影響桑谍,放射性物質(zhì)發(fā)生泄漏延柠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一锣披、第九天 我趴在偏房一處隱蔽的房頂上張望贞间。 院中可真熱鬧,春花似錦雹仿、人聲如沸增热。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钓葫。三九已至,卻和暖如春票顾,著一層夾襖步出監(jiān)牢的瞬間础浮,已是汗流浹背帆调。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留豆同,地道東北人番刊。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像影锈,于是被迫代替她去往敵國和親芹务。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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

  • HTTP基本原理 URI鸭廷、URL枣抱、URN(Uninform Resource) URI(Identifier):統(tǒng)...
    GHope閱讀 2,081評論 2 26
  • 昨天,我們更多的討論了request的基礎(chǔ)API辆床,讓我們對它有了基礎(chǔ)的認(rèn)知佳晶。學(xué)會上一課程,我們已經(jīng)能寫點基本的爬蟲...
    阿爾卑斯山上的小灰兔閱讀 12,289評論 1 8
  • 2018年9月30日讼载,(農(nóng)歷八月二十一) 00:29分轿秧,我的大兒子降生了! 老婆是9月29日晚6點17分被推進(jìn)了產(chǎn)...
    f0ceed4f8c54閱讀 175評論 0 1
  • 這些日子咨堤,通過對焦點的初步了解菇篡,我發(fā)現(xiàn)我越來越喜歡焦點了。在各位老師的擾動下一喘,我也開始了分享我的每天心得驱还,希望...
    悠揚小徑閱讀 184評論 0 0
  • http://www.cae.cn/cae/html/files/2015-10/29/2015102910582...
    Zerat閱讀 237評論 0 0