例1.python抓取图片
import urllib.request
import re
# py抓取页面图片并保存到本地
# 获取页面信息
def getHtml(url):
html = urllib.request.urlopen(url).read()
return html
# 通过正则获取图片
def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
# 括号表示分组,将括号的内容捕获到分组当中
# .+表示匹配至少一个任意字符,问号?表示懒惰匹配,也就是匹配尽可能少的字符串。
# .+?\.jpg合起来表示尽可能少匹配字符的匹配到.jpg,避免匹配范围超出src的范围
# 这个括号也就可以匹配网页中图片的url了
# " pic_ext #匹配" pic_ext
imgre = re.compile(reg)
imglist = re.findall(imgre, html)
# 正则 re.findall的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)
# findall(pattern, string, flags=0)
print(imglist)
return imglist
html = getHtml("http://tieba.baidu.com/p/2460150866")
list = getImg(html.decode())
# 循环把图片存到本地
x = 0
for imgurl in list:
print(x)
urllib.request.urlretrieve(imgurl, r'%s.jpg' % x)
# %s意思是字符串参数,就是将变量的值传入到字符串里面,字符串后的'%'后就是写要传入的参数
x += 1
# for循环对获取的图片连接进行遍历,为了使图片的文件名看上去更规范,对其进行重命名,命名规则通过x变量加1
# urllib.urlretrieve()方法,直接将远程数据下载到本地,保存的位置默认为程序的存放目录
print(getImg(html))