【爬蟲】(一):爬網(wǎng)頁颜及、爬圖片甩苛、自動(dòng)登錄

date: 2016-12-12 18:49:28

一、HTTP協(xié)議

HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫俏站。
用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議讯蒲。

HTTP的請(qǐng)求響應(yīng)模型

客戶端發(fā)起請(qǐng)求,服務(wù)器回送響應(yīng)肄扎。

這樣就限制了使用HTTP協(xié)議爱葵,無法實(shí)現(xiàn)在客戶端沒有發(fā)起請(qǐng)求的時(shí)候,服務(wù)器將消息推送給客戶端反浓。

工作流程

一次HTTP操作稱為一個(gè)事務(wù),其工作過程可分為四步:

  1. 客戶機(jī)與服務(wù)器需要建立連接赞哗。只要單擊某個(gè)超級(jí)鏈接雷则,HTTP的工作開始。
  2. 建立連接后肪笋,客戶機(jī)發(fā)送一個(gè)請(qǐng)求給服務(wù)器月劈。
  3. 服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息藤乙。
  4. 客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上猜揪,然后客戶機(jī)與服務(wù)器斷開連接。

請(qǐng)求報(bào)頭

請(qǐng)求報(bào)頭允許客戶端向服務(wù)器端傳遞請(qǐng)求的附加信息以及客戶端自身的信息坛梁。

響應(yīng)報(bào)頭

響應(yīng)報(bào)頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加響應(yīng)信息而姐,以及關(guān)于服務(wù)器的信息和對(duì)Request-URI所標(biāo)識(shí)的資源進(jìn)行下一步訪問的信息。

二划咐、Python3.X爬蟲編程

1拴念、簡(jiǎn)單的爬蟲

python3.X
一個(gè)簡(jiǎn)單的示例爬蟲

import urllib.request  
url = "http://www.douban.com/"  
webPage=urllib.request.urlopen(url)  
data = webPage.read()  
data = data.decode('UTF-8')  
print(data)  
print(type(webPage))  
print(webPage.geturl())  
print(webPage.info())  
print(webPage.getcode())  


2、偽裝成瀏覽器來爬網(wǎng)頁

有些網(wǎng)頁褐缠,比如登錄的政鼠。如果你不是從瀏覽器發(fā)起的起求,這就不會(huì)給你響應(yīng)队魏,這時(shí)我們就需要自己來寫報(bào)頭公般。然后再發(fā)給網(wǎng)頁的服務(wù)器,這時(shí)它就以為你就是一個(gè)正常的瀏覽器。從而就可以爬了官帘!

python3.4   
一個(gè)簡(jiǎn)單的示例爬蟲  
import urllib.request  
weburl = "http://www.douban.com/"  
webheader = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}   
req = urllib.request.Request(url=weburl, headers=webheader)    
webPage=urllib.request.urlopen(req)  
data = webPage.read()  
data = data.decode('UTF-8')  
print(data)  
print(type(webPage))  
print(webPage.geturl())  
print(webPage.info())  
print(webPage.getcode())    

來看看請(qǐng)求報(bào)頭瞬雹,就是和我們?cè)O(shè)置的一個(gè)樣。
返回的HTML是一樣的遏佣。

3挖炬、爬取網(wǎng)站上的圖片

前面我們可以爬網(wǎng)頁了,下一步我們就可以批量的自動(dòng)下載該網(wǎng)頁上的各種數(shù)據(jù)了状婶,比如意敛,下載該網(wǎng)頁上的所有圖片。

python3.x 爬蟲教程  
爬取網(wǎng)站上的圖片  
import urllib.request    
import socket    
import re    
import sys    
import os    
targetDir = r"E:\PythonWorkPlace\load"  #文件保存路徑  
def destFile(path):    
    if not os.path.isdir(targetDir):    
        os.mkdir(targetDir)    
    pos = path.rindex('/')    
    t = os.path.join(targetDir, path[pos+1:])    
    return t    
if __name__ == "__main__":  #程序運(yùn)行入口  
    weburl = "https://www.douban.com/"  
    webheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}   
    req = urllib.request.Request(url=weburl, headers=webheaders)  #構(gòu)造請(qǐng)求報(bào)頭  
    webpage = urllib.request.urlopen(req)  #發(fā)送請(qǐng)求報(bào)頭  
    contentBytes = webpage.read()    
    for link, t in set(re.findall(r'(https:[^\s]*?(jpg|png|gif))', str(contentBytes))):  #正則表達(dá)式查找所有的圖片  
        print(link)  
        try:   
            urllib.request.urlretrieve(link, destFile(link)) #下載圖片  
        except:  
            print('失敗') #異常拋出  

4膛虫、模擬登陸西電研究生教務(wù)處


 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
import requests
url = 'http://jwxt.xidian.edu.cn/caslogin.jsp' #login網(wǎng)址

id = '1601120338'
password = '113411'
lt_value = 'LT-31860-Nr4DeRHVPUcMaNqcVrB5XxzLecI0ev1481623540759-wHmD-cas'
exe_value = 'e1s1'

datas = {'username': id, 'password': password,
          "submit": "", "lt": lt_value, "execution": exe_value,
          "_eventId": "submit", "rmShown": '1'
          }

headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
           'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
           # "Host": "ids.xidian.edu.cn",
           "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
           "Accept-Encoding": "gzip, deflate",
           "Referer": "http://ids.xidian.edu.cn/authserver/login?service=http%3A%2F%2Fjwxt.xidian.edu.cn%2Fcaslogin.jsp",
           # 'X-Requested-With': "XMLHttpRequest",
           "Content-Type": "application/x-www-form-urlencoded"
           }
sessions = requests.session()
response = sessions.post(url, headers=headers, data=datas)
print(response.status_code)

返回的狀態(tài)碼為200.
這里用到了Requests模塊草姻,還不會(huì)使用的可以查看中文文檔 ,它給自己的定義是:HTTP for Humans稍刀,因?yàn)楹?jiǎn)單易用易上手撩独,我們只需要傳入U(xiǎn)rl地址,構(gòu)造請(qǐng)求頭账月,傳入post方法需要的數(shù)據(jù)综膀,就可以模擬瀏覽器登陸了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末局齿,一起剝皮案震驚了整個(gè)濱河市剧劝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抓歼,老刑警劉巖讥此,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谣妻,居然都是意外死亡萄喳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蹋半,熙熙樓的掌柜王于貴愁眉苦臉地迎上來他巨,“玉大人,你說我怎么就攤上這事减江∥胖” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵您市,是天一觀的道長(zhǎng)觉痛。 經(jīng)常有香客問我,道長(zhǎng)茵休,這世上最難降的妖魔是什么薪棒? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任手蝎,我火速辦了婚禮,結(jié)果婚禮上俐芯,老公的妹妹穿的比我還像新娘棵介。我一直安慰自己,他們只是感情好吧史,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布邮辽。 她就那樣靜靜地躺著,像睡著了一般贸营。 火紅的嫁衣襯著肌膚如雪吨述。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天钞脂,我揣著相機(jī)與錄音揣云,去河邊找鬼。 笑死冰啃,一個(gè)胖子當(dāng)著我的面吹牛邓夕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阎毅,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼焚刚,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了扇调?” 一聲冷哼從身側(cè)響起汪榔,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肃拜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雌团,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡燃领,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锦援。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猛蔽。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灵寺,靈堂內(nèi)的尸體忽然破棺而出曼库,到底是詐尸還是另有隱情,我是刑警寧澤略板,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布毁枯,位于F島的核電站,受9級(jí)特大地震影響叮称,放射性物質(zhì)發(fā)生泄漏种玛。R本人自食惡果不足惜藐鹤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赂韵。 院中可真熱鬧娱节,春花似錦、人聲如沸祭示。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽质涛。三九已至稠歉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹂窖,已是汗流浹背轧抗。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞬测,地道東北人横媚。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像月趟,于是被迫代替她去往敵國(guó)和親灯蝴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理孝宗,服務(wù)發(fā)現(xiàn)穷躁,斷路器,智...
    卡卡羅2017閱讀 134,701評(píng)論 18 139
  • Web測(cè)試基礎(chǔ) I. 如何開展Web測(cè)試 Web測(cè)試的對(duì)象 Web的頁面元素 Web的業(yè)務(wù)邏輯 Web的數(shù)據(jù)行為 ...
    厲鉚兄閱讀 4,393評(píng)論 4 62
  • 一因妇、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,373評(píng)論 6 152
  • 蚊子發(fā)現(xiàn)婚被,最近和男朋友聊天狡忙,每次都是自己主動(dòng)找話題,而男朋友很少主動(dòng)找自己聊天址芯。蚊子覺得有點(diǎn)累灾茁,剛談戀愛的時(shí)候,男...
    齊眉婚姻閱讀 3,427評(píng)論 1 5
  • 一場(chǎng)繁華即將開始 這個(gè)冬難道真的就這樣過去了么谷炸?一場(chǎng)雪也不給下北专。 也許,還有機(jī)會(huì)旬陡,老天爺是個(gè)任性的老人拓颓,在不合時(shí)宜...
    望秋實(shí)閱讀 279評(píng)論 0 1