看完上篇文档之后,我们对于正则表达式已经有了基本的了解,其实学习最有效的办法就是带着问题和目的,这里我们假设有一个目标:获取某个网页上指定规格的图片的链接地址,并下载到本地。

一、实现步骤:

1.在浏览器中打开某个网页,例如:http://tieba.baidu.com/p/4691693167

2.假设我们要下载该页面中的几张大图,那么我们需要获取图片的url,这其实需要有两步操作来获取,一是先知道该图片的url,二是查看当前网页的html内容找到包含此url地址的格式,这样我们就能通过正则表达式把它筛选出来:

得到图片名称的步骤很简单,直接右键图片选择“属性”即可看到:

复制该地址,关闭属性界面,按键盘F12可查看当前网页的html内容,搜索上面图片的url地址,可以找到:

3.设计正则表达式为:r'src="(.+?\.jpg)" width',这里width其实是额外的信息,用来过滤规格之外的其他图片url,相当于附加筛选信息。

二、下载图片保存到本地:

其实在urllib库中已经继承了这样的方法,这个方法就是urllib.urlretrieve(),直接将远程数据加载到本地,例如:

urllib.urlretrieve(imgurl,'%s.jpg' % name)

imgurl是目标图片的url地址,name是图片保存到本地后的名称。
        由于获取到的图片url可能是多个,所以使用循环体调用urllib.urlretrieve()方法,将符合规格的图片加载到本地。

三、实现代码:

# encoding: UTF-8
import urllib
import re def getHtml(url):
response = urllib.urlopen(url)
html = response.read()
return html #获取目标url的html内容
html = getHtml("http://tieba.baidu.com/p/4691693167") #获取图片的url并下载到本地
def getImg(html):
reg = r'src="(.+?\.jpg)" width'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
x=0
#使用循环图加载图片
for imgurl in imglist:
urllib.urlretrieve(imgurl,'%s.jpg' % x)
x+=1 #开始加载图片
getImg(html)
 

不难看出,其实关键点还是在于目标信息的筛选正则表达式的设计,上述脚本运行结果为目标图片被保存到本地脚本所在的目录下面:

Python 爬虫5——爬取并下载网页指定规格的图片的更多相关文章

  1. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

  2. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

  3. python爬虫实战---爬取大众点评评论

    python爬虫实战—爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经 ...

  4. Python爬虫之爬取慕课网课程评分

    BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...

  5. Node JS爬虫:爬取瀑布流网页高清图

    原文链接:Node JS爬虫:爬取瀑布流网页高清图 静态为主的网页往往用get方法就能获取页面所有内容.动态网页即异步请求数据的网页则需要用浏览器加载完成后再进行抓取.本文介绍了如何连续爬取瀑布流网页 ...

  6. Python爬虫之爬取站内所有图片

    title date tags layut Python爬虫之爬取站内所有图片 2018-10-07 Python post 目标是 http://www.5442.com/meinv/ 如需在非li ...

  7. Python爬虫之爬取淘女郎照片示例详解

    这篇文章主要介绍了Python爬虫之爬取淘女郎照片示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本篇目标 抓取淘宝MM ...

  8. 初次尝试python爬虫,爬取小说网站的小说。

    本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说. 下面直接上菜. 1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests.requests是python实现的简单易 ...

  9. Python爬虫《爬取get请求的页面数据》

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

随机推荐

  1. Debian-based Linux distributions 安装 virtualbox

    Add the following line to your /etc/apt/sources.list: deb http://download.virtualbox.org/virtualbox/ ...

  2. 搭建Nginx+Java环境测试并且运行

    一.简介: Tomcat在高并发环境下处理动态请求时性能很低,而在处理静态页面更加脆弱.虽然Tomcat的最新版本支持epoll,但是通过Nginx来处理静态页面要比通过Tomcat处理在性能方面好很 ...

  3. node09-cookie

    目录:node01-创建服务器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-exp ...

  4. useradd与adduser的区别

    useradd与adduser都是创建新的用户 在CentOs下useradd与adduser是没有区别的都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码. 而 ...

  5. js的类型及调试下的辨识

    <script> var s1 = '11'; var s2 = 11; var s3 = true; console.log("我的类型是"+typeof(s1)+& ...

  6. Tensorflow 处理libsvm格式数据生成TFRecord (parse libsvm data to TFRecord)

    #写libsvm格式 数据 write libsvm     #!/usr/bin/env python #coding=gbk # ================================= ...

  7. 使用Azure REST API创建虚拟机

    Hollis Yao, Shihao Rong  使用REST API创建虚拟机之前,首先要确保Azure订阅中已经建好了"云服务"和"存储账号".如果没有的话 ...

  8. jQuery获取输入框并设置焦点

    $(':input:enabled:visible:first').focus(); $("input:text:visible:first").focus(); 表单元素选择器: ...

  9. 自连接<EntityFramework6.0>

    自引用 public class PictureCategory { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ...

  10. dir命令只显示文件名

    dir /b 就是ls -f的效果 1057 -- FILE MAPPING_web_archive.7z 2007 多校模拟 - Google Search_web_archive.7z 2083 ...