python爬取网上图片

       

       在网上看到一个使用python爬虫的小程序,自己学习了一下,下面来看一下这个程序实现的过程:

目的:抓取网页上的图片。

步骤:1、拿到网页的源码

            2、用正则表达式匹配出网页上图片的URL

            3、把图片保存到电脑中

一、获取网页源码的程序为:

import urllib #urllib是python进行网络访问的基础模块

#比如获取贴吧上一网页源码

page = urllib.urlopen("http://tieba.baidu.com/p/3205263090") 

#.urlopen()函数是打开一个URL,返回一个文件对象,然后可以进行类似文件对象的操作

html = page.read()

print html #这时候输出,就能显示出这个网页的源码

二、用正则表达式匹配图片URL

      找出网页中图片的地址进行正则表达式匹配,可以理解为,网页中每个图片的地址都不一样,找出它们的规律,用一个正则表达式匹配它们。

在页面的图片上点击右键,点击“查看元素”,找到这个图片对应的源码。找到所有这些图片源码的规律,写出匹配它们的正则表达式,就这个例子而言,

正则表达式为reg=r'src="([.\S]*\.jpg)" pic_ext="jpeg"

      这里需注意:正则表达式中小括号()是为了提取匹配的字符串。若没有加小括号,则提取出的URL就会包含src=.....pic_ext="jpeg",这不是图片的源码,

最后下载到本地就会出错。

      符号(.)为通配符,\S为非空白字符,*为匹配前一个字符0次或无限次。

imagereg = re.compile(reg)

#re.compile()将正则表达式(以字符串形式书写的)转化为模式对象
imgurls = re.findall(imagereg, html)

#以列表的形式返回所有能匹配到的字符串。也就是说imguris是一个列表,里边包含了所有匹配到的字符串,每条字符串就是每个图片的源码

三、保存图片

urllib.urlretrieve(url,"E:\手机\sd卡\%s.jpg" % “name”)

urllib.urlretrieve()方法是将URL定位到的html文件下载到本地,第一个参数是要下载的url,第二个参数是要保存的地址和文件名

四、 最后看一下整个程序

import urllib
import re


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

html =  getHtml('http://tieba.baidu.com/p/3205263090') 
reg = r'src="([.\S]*\.jpg)" pic_ext="jpeg"'

imagereg = re.compile(reg)
imgurls = re.findall(imagereg, html)
x = 1
for imgurl in imgurls:
    urllib.urlretrieve(imgurl, 'E:\手机\sd卡\%s.jpg' % x)
    x +=1

运行看一下结果

      最后说一下正则表达式的学习方法:个人认为正则表达式学习起来还是挺困难的,网上介绍正则表达式的内容一看就是一大堆,看着就头疼,所以最好的学习方法还是每次只学习一部分,特别是在项目中学习,查找满足特定任务需要的那部分内容,久而久之,就能熟练运用正则表达式了。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值