Python學(xué)習(xí)隨筆

本筆記整理自中谷教育在線教育視頻

學(xué)習(xí)筆記——正則表達(dá)式常用符號(hào)

這里學(xué)習(xí)過正則表達(dá)式后,簡單做了一個(gè)爬蟲程序,效果為從某個(gè)網(wǎng)站上下載網(wǎng)站上的符合要求的圖片。這里選取了百度貼吧中的某個(gè)壁紙網(wǎng)站:實(shí)驗(yàn)網(wǎng)站,目標(biāo)是下載實(shí)驗(yàn)網(wǎng)站上面的壁紙圖片。

實(shí)現(xiàn)代碼

import re
import urllib

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

def getImg(html):
    reg = r'src="(.*?\.jpg)" width'
    imgre = re.compile(reg)
    imglist = re.findall(imgre, html)
    x = 0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl,'%s.jpg' %x)
        x+=1

Html = getHtml("https://tieba.baidu.com/p/1112043392?pid=12757849991&cid=0&red_tag=0812006929#12757849991")  \\選取某百度貼吧網(wǎng)址
getImg(Html)

代碼分析
首先,這里導(dǎo)入正則表達(dá)式模塊re、網(wǎng)頁爬蟲模塊urliib

import re
import urllib

定義兩個(gè)函數(shù),getHtml()和getImg(),作用分別為獲得網(wǎng)頁的源代碼和得到圖片。

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

getHtml()函數(shù)實(shí)現(xiàn)了從網(wǎng)站url上獲取源代碼。

def getImg(html):
    reg = r'src="(.*?\.jpg)" width'
    imgre = re.compile(reg)
    imglist = re.findall(imgre, html)
    x = 0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl,'%s.jpg' %x)
        x+=1

getImg()函數(shù)實(shí)現(xiàn)了從源代碼匹配圖片的原網(wǎng)址代碼,主要是正則的定義,分析過網(wǎng)站源代碼后,發(fā)現(xiàn)圖片原網(wǎng)址有以下共同特征:以'.jpg'結(jié)尾,網(wǎng)站前后有",在""之前有字符串'src=',之后有' width',于是,正則的定義可以如下:

reg = r'src="(.*?\.jpg)" width'

其中,reg = r'str'表示定義字符串str為正則;()表示只輸出()內(nèi)的字符串的內(nèi)容,即在后面由re.findall()函數(shù)匹配后只輸出圖片源網(wǎng)站。這里的'.'表示任意字符,'*'表示取0到無限長,'?'表示進(jìn)行最小匹配,防止在網(wǎng)站源代碼內(nèi)進(jìn)行最大搜索,不能得到圖片網(wǎng)址,這里第二個(gè)'.'前面加''表示這里的'.'是字符本身,而不是廣泛的任意字符。
然后使用urllib.urlretrieve()實(shí)現(xiàn)圖片的下載,命名。

urllib.urlretrieve(imgurl,'%s.jpg' %x)

幾點(diǎn)問題

  • 這里進(jìn)行圖片下載時(shí)首先要保證圖片網(wǎng)站是能夠進(jìn)入的,筆者在實(shí)現(xiàn)時(shí)就出現(xiàn)了報(bào)錯(cuò)狀態(tài),原因是匹配的圖片網(wǎng)站本身就是不可進(jìn)入的。
  • 匹配后可能會(huì)出現(xiàn)非要求的網(wǎng)址被匹配出來,這里就要求能夠精確搜索條件,增加匹配的精度。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,562評(píng)論 19 139
  • 《寒夜班》 呼嘯北風(fēng)勁吹雪, 寒夜睡夢(mèng)鬧鐘絕。 夜半難舍被溫暖, 腳踩雪冰心如鐵。 冰凍寒塞透心結(jié), 裹脖護(hù)耳眉霜...
    純水陸零閱讀 136評(píng)論 3 6
  • hadoop下載地址:http://mirror.bit.edu.cn/apache/hadoop/common/...
    絲絲雨涼閱讀 2,424評(píng)論 0 1
  • 導(dǎo)語: 遇見簡書其實(shí)很意外, 但是其實(shí)仔細(xì)想想也是很必然的.長期不好的寫作習(xí)慣, 以及寫文章的時(shí)候懶得用鼠標(biāo)去操作...
    Tom閱讀 177評(píng)論 0 2
  • 2018.3.2 今天泛學(xué)課程如何改進(jìn)夫妻關(guān)系,雖然對(duì)于目前的自己不是太適用,但同理一樣適用于戀人,家人 ...
    小柒姐姐閱讀 259評(píng)論 0 0

友情鏈接更多精彩內(nèi)容