# 小程序-採用正則表達式匹配百度貼吧的圖片html
# 篩選數據正則表達式
# 匹配模塊 import re import urllib.request小程序
# 獲取並打開鏈接函數
def getHtml(url):url
page = urllib.request.urlopen(url)htm
html = page.read() return html圖片
# 定義篩選圖片的函數字符串
# pattern:正則表達式get
# string:要匹配的字符串string
# flags:控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等
# 獲取字符串中的全部匹配項
# pattern:正則表達式
# string:要匹配的字符串
"""
match() 決定 RE 是否在字符串剛開始的位置匹配 search() 掃描字符串,找到這個 RE 匹配的位置 findall() 找到 RE 匹配的全部子串,並把它們做爲一個列表返回 finditer() 找到 RE 匹配的全部子串,並把它們做爲一個迭代器返回
"""
# 匹配表達式書寫
# \s 匹配任何空白字符
# \S 匹配任何非空白字符
#\d 匹配任何十進制數;它至關於類 [0-9]。
#\D 匹配任何非數字字符;它至關於類 [^0-9]。
# \w 匹配任何字母數字字符;它至關於類 [a-zA-Z0-9_]。
# \W 匹配任何非字母數字字符;它至關於類 [^a-zA-Z0-9_]。
# * 並不匹配字母字符 "*";相反,它指定前一個字符能夠被匹配零次或更屢次,而不是隻有一次。
# 舉個例子,ca*t 將匹配 "ct" (0 個 "a" 字符), "cat" (1 個 "a"), "caaat" (3 個 "a" 字符)等等。
# 正則表達式一般在 Python 代碼中都是用這種 raw 字符串表示。
# 常規字符串 "ab*"
# raw字符串 r"ab*"
# 以下表達式匹配
# 1.首先填寫r
# 2.問號 ? 匹配一次或零次;你能夠認爲它用於標識某事物是可選的。
# 3.\section 要匹配的字符串
# r'src="(.+?\.jpg)"pic_ext'
def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
imgre = re.compile(reg)
imglist = re.findall(imgre, html)
return imglist
#打印結果
html = getHtml("http://tieba.baidu.com/p/2460150866")
result = getImg(html) print(result)