[7]个人学习python:爬取百度贴吧图片,并保存到本地目录

代码如下:

# -*- coding: utf-8 -*
import urllib.request,re
url='http://tieba.baidu.com/p/5665019988/'
page=urllib.request.urlopen(url,timeout = 2)
html=page.read()
html=html.decode('utf-8')                        #因为百度不是utf-8,故需要转码
reg=r'src="(http://imgsrc.baidu.com/forum/w%3D580/sign=[^\s]*?\.jpg)"'  #此处指定是http://imgsrc.baidu.com/forum/w%3D580/sign=地址开头的图片,并作为字符串
imger=re.compile(reg)                              # re.compile()函数用于编译正则表达式,生成一个‘正则表达式对象’
imglist=re.findall(imger,html)                     # re.findall()在字符串中找到‘正则表达式对象’所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
n=0
for imgurl in imglist:
    urllib.request.urlretrieve(imgurl,r'C:\\Users\\Administrator\\PycharmProjects\\untitled\\venv1\\image\\%s.jpg'%n)
    n=n+1

结果如下:


小结:

1、正则表达式:

    '.'匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符;

    '*'匹配前一个字符零次到多次, '+'则是一次或多次,'?'匹配一次或零次,'[^\s]'匹配一个非空字符,'*?'常用搭配,匹配前一个或多个字符(可以重复匹配);

    '\'+'字符'构成转义字符,'\'+'元字符或转义字符'使其无效化,r只是使转义字符失效;

2、'%'格式化字符串,最基本的用法是将 %后面的值 替换 格式符%_ ;%s指字符串,%d指整数;

3、在保存到某目录之前,要先检查一下目录是否存在,不存在则建立;

4、urllib.urlopen()方法用于打开一个URL地址,通常还要加read()获取数据;urllib.urlretrieve()将数据下载到本地。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值