python-爬蟲基礎(chǔ)(正則表達(dá)式)

正則表達(dá)式符號(hào)與方法


符號(hào).是一個(gè)占位符

import re
# .的使用舉例
a = 'xy123'
b = re.findall('x.',a)
print b

輸出:xy


符號(hào)*匹配前一個(gè)字符0次或無限次

#*的使用舉例
a = 'xyxy123'
b = re.findall('x*',a)
print b

輸出:['x', '', 'x', '', '', '', '', '']


符號(hào)?匹配前1個(gè)字符0次或1次

#?的使用舉例
a = 'xy123'
b = re.findall('x?',a)
print b

輸出:['x', '', '', '', '', '']


.:貪心算法
.
?:非貪心算法

# .*的使用舉例
secret_code = 'hadkfalifexx|xxfasdjifja134xxlovexx23345sdfxxyouxx8dfse'
b = re.findall('xx.*xx',secret_code)
print b

輸出:['xx|xxfasdjifja134xxlovexx23345sdfxxyouxx']

# .*?的使用舉例
c = re.findall('xx.*?xx',secret_code)
print c

輸出:['xx|xx', 'xxlovexx', 'xxyouxx']

# 使用括號(hào)與不使用括號(hào)的差別
# 返回()內(nèi)的數(shù)據(jù)
d = re.findall('xx(.*?)xx',secret_code)
print d
for each in d:
    print each

?輸出:['|', 'love', 'you']
|
love
you


. 無法處理換行符

s = '''sdfxxhello
xxfsdfxxworldxxasdf'''
d = re.findall('xx(.*?)xx',s)
print d

輸出:['fsdf']

# re.S的作用使 . 包括\n
s = '''sdfxxhello
xxfsdfxxworldxxasdf'''
d = re.findall('xx(.*?)xx',s,re.S)
print d

輸出:['hello\n', 'world']


對(duì)比findall與search的區(qū)別

s2 = 'asdfxxIxx123xxlovexxdfd'
f = re.search('xx(.*?)xx123xx(.*?)xx',s2).group(1)  #輸出:I
#  f = re.search('xx(.*?)xx123xx(.*?)xx',s2).group(2)  #輸出:love
print f

#finall
f2 = re.findall('xx(.*?)xx123xx(.*?)xx',s2)
print f2[0][1]    #輸出love

sub使用舉例:


實(shí)戰(zhàn)——制作文本爬蟲

目標(biāo)

目標(biāo)網(wǎng)站右鍵打不開戳气,換一個(gè)http://wiki.jikexueyuan.com/

極客學(xué)院Wiki

找到圖片,右鍵檢查


找到對(duì)應(yīng)代碼

在頁面源代碼搜索class="imgbox"


選擇這一部分,源代碼復(fù)制到source.txt

picdownloader.py

#!/usr/bin/python
#-*- coding:utf-8 -*-
import re
import requests

#讀取源代碼文件
f = open('source.txt','r')
html = f.read()
f.close()

#匹配圖片網(wǎng)址
pic_url = re.findall('img src="(.*?)" alt=',html,re.S)
i = 0
for each in pic_url:
    print 'now downloading : ' + each
    pic = requests.get(each)
    fp = open('pic\\' + str(i) + '.jpg','wb')
    fp.write(pic.content)
    fp.close()
    i += 1
picdownloader.py運(yùn)行效果
成功保存了圖片

手工找到頁面再下載顯得有點(diǎn)low:修改代碼使?其自動(dòng)獲取源代碼
#!/usr/bin/python
#-- coding:utf-8 --
import re
import requests
import urllib2

#讀取源代碼文件
#f = open('source.txt','r')
url = 'http://wiki.jikexueyuan.com/'
response = urllib2.urlopen(url)
htmls = response.read()

#匹配圖片網(wǎng)址    
#由于是下載整個(gè)頁面,所以原來的正則表達(dá)式會(huì)匹配更多的內(nèi)容
#所以采用先抓大再抓小顽决,把范圍縮小~
picsurl = re.findall('<div class="imgbox">(.*?) </div>',htmls,re.S) 
#findall返回的是一個(gè)列表,需要將列表再次弄成一個(gè)string,逐個(gè)寫入一個(gè)txt
f = open('url.txt','wb')
for i in picsurl:
    f.write(i)
f.close()
ff = open('url.txt','r')
html = ff.read()
ff.close()
#這代碼寫得確實(shí)有點(diǎn)爛短条。。才菠。茸时。

pic_url = re.findall('img src="(.*?)" alt=',html,re.S)
i = 0
for each in pic_url:
    print 'now downloading : ' + each
    pic = requests.get(each)
    fp = open('pic\\' + str(i) + '.jpg','wb')
    fp.write(pic.content)
    fp.close()
    i += 1

效果同上


換個(gè)網(wǎng)站試試

【美空模特頻道】
#!/usr/bin/python
#-*- coding:utf-8 -*-
import re
import requests
import urllib2

#讀取源代碼文件
url = 'http://www.moko.cc/channels/post/23/1.html'
response = urllib2.urlopen(url)
htmls = response.read()

#匹配圖片網(wǎng)址
pic_url = re.findall('img src2="(.*?)" alt=',htmls,re.S)
i = 0
for each in pic_url:
    print 'now downloading : ' + each
    pic = requests.get(each)
    fp = open('picmoko\\' + str(i) + '.jpg','wb')
    fp.write(pic.content)
    fp.close()
    i += 1
jkxyclass Finder

把第一頁的48張封面圖給爬下來了~


實(shí)戰(zhàn)——處理文本

準(zhǔn)備下個(gè)電視劇,用mac的瀏覽器打開了一個(gè)頁面

《血色星期一》(Bloody Monday)更新最終回-1280x720-外掛字幕-日語中字[HDTV]

然而mac沒有裝迅雷鸠儿,都是用虛擬機(jī)里面的破解版迅雷下載的屹蚊。
這個(gè)時(shí)候直接點(diǎn)頁面就尷尬了,無法調(diào)用迅雷
右鍵看了看进每,頁面源代碼

view-source.www.ed2bt.com-japanese-drama-212838.html Google Chrome

發(fā)現(xiàn)ed2k鏈接都在里面汹粤,一看就可以用正則表達(dá)式處理一下,然后復(fù)制到虛擬機(jī)的迅雷里面創(chuàng)建任務(wù)

將部分頁面源代碼復(fù)制保存到test111.txt
# -*- coding:utf-8 -*-
#test111.py
__author__ = 'jerry'
import re

f = open('test111.txt','r')
html = f.read()
f.close()

web = re.findall('href="(.*?)">',html,re.S)
i=0

while i<13:
    print web[i]
    i+=1
輸出結(jié)果

復(fù)制到虛擬機(jī)的迅雷里面創(chuàng)建任務(wù)



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末田晚,一起剝皮案震驚了整個(gè)濱河市嘱兼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贤徒,老刑警劉巖芹壕,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異接奈,居然都是意外死亡踢涌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門序宦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睁壁,“玉大人,你說我怎么就攤上這事互捌∨嗣鳎” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵秕噪,是天一觀的道長钳降。 經(jīng)常有香客問我,道長腌巾,這世上最難降的妖魔是什么遂填? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮壤躲,結(jié)果婚禮上城菊,老公的妹妹穿的比我還像新娘。我一直安慰自己碉克,他們只是感情好凌唬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般客税。 火紅的嫁衣襯著肌膚如雪况褪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天更耻,我揣著相機(jī)與錄音测垛,去河邊找鬼。 笑死秧均,一個(gè)胖子當(dāng)著我的面吹牛食侮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播目胡,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锯七,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了誉己?” 一聲冷哼從身側(cè)響起眉尸,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巨双,沒想到半個(gè)月后噪猾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赘淮,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拷况,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年联贩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吊骤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡据悔,死狀恐怖凿菩,靈堂內(nèi)的尸體忽然破棺而出胳挎,到底是詐尸還是另有隱情婆廊,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布巫橄,位于F島的核電站淘邻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏湘换。R本人自食惡果不足惜宾舅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彩倚。 院中可真熱鬧筹我,春花似錦、人聲如沸帆离。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哥谷。三九已至岸夯,卻和暖如春麻献,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猜扮。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工勉吻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旅赢。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓齿桃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親煮盼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子短纵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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