零基礎(chǔ)制作一個(gè)Python 爬蟲

一睹栖、前言

1照宝、相關(guān)介紹:

采用Python 來進(jìn)行爬蟲的主要原因是: Python語言簡潔呻顽,使用方便雹顺,擁有許多方便進(jìn)行爬蟲的庫,如Urllib廊遍。
Python除了爬蟲獲取數(shù)據(jù)外嬉愧,還可以圖像處理,數(shù)據(jù)處理喉前,導(dǎo)出Execl表格等没酣。更多可以看:Python可以用來干嘛?

2卵迂、安裝Python

蘋果系統(tǒng)上一般默認(rèn)都裝有Python編譯器裕便,為Python2.x版本。本文出現(xiàn)的代碼都是以Python2.7版本為準(zhǔn)见咒。
如果需要Python3.x或者在windows上運(yùn)行偿衰,就需要自己去安裝Python,具體見:安裝Python

二、爬蟲

本文中以實(shí)現(xiàn)一個(gè)爬取網(wǎng)頁中的圖片的爬蟲為例子。

預(yù)備知識

Python基礎(chǔ)知識
Python中urllib庫的用法
Python正則表達(dá)式
Python中re庫的用法

1下翎、Python基礎(chǔ)知識

1缤言、Python腳本文件后綴名為.py
2、#為注釋符號
3视事、Python中沒有花括號{}胆萧,用:代替

#eg:
for url in urls :
      print url

4、函數(shù)的調(diào)用寫法與JS相似

#eg
func(參數(shù))

5俐东、運(yùn)行Python

在終端輸入:

python **.py

如果是Python3.x版本輸入:

python3 **.py

2鸳碧、Python中urllib庫的用法

urlopen 和read

urlopen:通過一個(gè)URL打開一個(gè)網(wǎng)頁。
read:讀取這個(gè)網(wǎng)頁犬性。

#eg
import urllib

url = 'http://www.thejoyrun.com'
page = urllib.urlopen(url)
html = page.read()
print html

獲取網(wǎng)頁的源碼:

源碼截圖.png

本文爬蟲的核心為:通過正則表達(dá)式在源碼中獲取圖片鏈接瞻离。

urlretrieve

urlretrieve:根據(jù)一個(gè)URL,下載相關(guān)文件

#eg
import urllib

urllib.urlretrieve('http://img.mm522.net/flashAll/20120502/1335945502hrbQTb.jpg','%s %s.jpg' % (datetime.datetime.now(),x)) #(URL,文件保存名字)

3、Python正則表達(dá)式

\d匹配數(shù)字
.匹配任意字符
\s匹配一個(gè)空格
*表示任意個(gè)數(shù)字符
+表示至少一個(gè)字符
具體可以看:Python正則表達(dá)式

4乒裆、Python中re庫的用法

split

用正則表達(dá)式進(jìn)行字符串切分套利,獲得一個(gè)list(可變數(shù)組)

#import re
testStr = 'http://www.thejoyrun.com'
print re.split(r'\.',testStr)
match

用正則表達(dá)式進(jìn)行匹配,如果匹配成功鹤耍,返回一個(gè)Match
對象肉迫,否則返回None

#import re

testStr = 'http://www.thejoyrun.com'
if re.match(r'http.*com', test): 
    print 'ok'
else:
    print 'failed'

完整代碼

#coding=utf-8
import urllib
import re
import datetime

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getImg(html):

#    splitReg = r'[\s\"\,\,\']+'
    splitReg = r'[\s\"]+'  #不區(qū)分,
    tempList = re.split(splitReg,html) #分割后獲得一個(gè)list (數(shù)組)
    
    imgUrls = [] #一個(gè)空list
    
    x = 0
    for str in tempList :
        matchReg = r'http:.*.jpg'
        if re.match(matchReg,str) :
            print '%s--' %x +str
            imgUrls.append(str)
            x = x + 1
            urllib.urlretrieve(str,'%s %s.jpg' % (datetime.datetime.now(),x))
        matchReg1 = r'http:.*.png'
        if re.match(matchReg1,str) :
            print '%s--' %x +str
            imgUrls.append(str)
            x = x + 1
            urllib.urlretrieve(str,'%s %s.jpg' % (datetime.datetime.now().date(),x))
    return imgUrls

html = getHtml("網(wǎng)址")
print(html)
getImg(html)```

我們用一下網(wǎng)址測試:
http://cn.bing.com/images/search?q=%E6%85%B5%E6%87%92%E5%B0%91%E5%A5%B3%E5%86%99%E7%9C%9F&FORM=ISTRTH&id=A87C17F9A484F4078C72BEB0FE1EC509BA1F59C8&cat=%E7%BE%8E%E5%A5%B3&lpversion=

下面是這個(gè)網(wǎng)址打開的網(wǎng)頁的截圖:
![網(wǎng)頁截圖.png](http://upload-images.jianshu.io/upload_images/1819750-5e75cfdb6fd6d640.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

下面是下載到本地的圖片截圖:
![下載到本地的圖片截圖.png](http://upload-images.jianshu.io/upload_images/1819750-0b046c6fdca2c29c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#爬蟲框架Scrapy :

 我們可以通過urllib庫結(jié)合正則制作一些入門級別的爬蟲稿黄,如果需要更強(qiáng)大喊衫、更多功能的爬蟲則需要借助爬蟲框架

```Scrapy``` Python開發(fā)的一個(gè)快速,高層次的屏幕抓取和web抓取框架,用于抓取web站點(diǎn)并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)杆怕,可以應(yīng)用在包括數(shù)據(jù)挖掘族购,信息處理或存儲歷史數(shù)據(jù)等一系列的程序中。

有興趣的同學(xué)可以到[Scrapy](http://doc.scrapy.org/en/latest/)看看

>NOTE:自己實(shí)踐的時(shí)候可以嘗試改一下代碼陵珍,例如把```.jpg```改成```.avi```寝杖。

#技術(shù)無罪,請勿飆車
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末互纯,一起剝皮案震驚了整個(gè)濱河市瑟幕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌留潦,老刑警劉巖只盹,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異兔院,居然都是意外死亡殖卑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門秆乳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來懦鼠,“玉大人钻哩,你說我怎么就攤上這事「匾保” “怎么了街氢?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長睦袖。 經(jīng)常有香客問我珊肃,道長,這世上最難降的妖魔是什么馅笙? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任伦乔,我火速辦了婚禮,結(jié)果婚禮上董习,老公的妹妹穿的比我還像新娘烈和。我一直安慰自己,他們只是感情好皿淋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布招刹。 她就那樣靜靜地躺著,像睡著了一般窝趣。 火紅的嫁衣襯著肌膚如雪疯暑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天哑舒,我揣著相機(jī)與錄音妇拯,去河邊找鬼。 笑死洗鸵,一個(gè)胖子當(dāng)著我的面吹牛越锈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播预麸,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼瞪浸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吏祸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤钩蚊,失蹤者是張志新(化名)和其女友劉穎贡翘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砰逻,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸣驱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝠咆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踊东。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡北滥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闸翅,到底是詐尸還是另有隱情再芋,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布坚冀,位于F島的核電站济赎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏记某。R本人自食惡果不足惜司训,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望液南。 院中可真熱鬧壳猜,春花似錦、人聲如沸滑凉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽譬涡。三九已至闪幽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涡匀,已是汗流浹背盯腌。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陨瘩,地道東北人腕够。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像舌劳,于是被迫代替她去往敵國和親帚湘。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

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

  • 1 前言 作為一名合格的數(shù)據(jù)分析師甚淡,其完整的技術(shù)知識體系必須貫穿數(shù)據(jù)獲取大诸、數(shù)據(jù)存儲、數(shù)據(jù)提取贯卦、數(shù)據(jù)分析资柔、數(shù)據(jù)挖掘、...
    whenif閱讀 18,052評論 45 523
  • 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù)撵割,現(xiàn)整理零基礎(chǔ)如何學(xué)爬蟲技術(shù)贿堰, 官方網(wǎng)站http://www.chujiangd...
    楚江數(shù)據(jù)閱讀 2,153評論 5 57
  • 今天我的世界下雨了 我忘記了雨傘 想聯(lián)系你 哪來的理由呢 說好了一個(gè)月 離開你 心痛的選擇 卻也是最好的選擇 你和...
    小執(zhí)子之手閱讀 325評論 0 0
  • 第二章生死之交田大勇 段少俠從心理咨詢室走出來時(shí),長舒一口氣啡彬,她與心理咨詢師談了約一個(gè)小時(shí)羹与,講述了二十幾年來人生經(jīng)...
    少年阿段閱讀 386評論 0 0
  • 周二纵搁,滬深兩市小幅高開吃衅,開盤慣性上沖后出現(xiàn)震蕩回落,創(chuàng)業(yè)板表現(xiàn)強(qiáng)于主板诡渴,主板連創(chuàng)分時(shí)新低捐晶,午后企穩(wěn)回升,創(chuàng)業(yè)板一直...
    談天看地閱讀 178評論 0 0