2019独角兽企业重金招聘Python工程师标准>>>
# 小程序-采用正则表达式匹配百度贴吧的图片
# 筛选数据
# 匹配模块 import re import urllib.request
# 获取并打开连接
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read() return html
# 定义筛选图片的函数
# pattern:正则表达式
# 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)