python实现简单爬虫功能的示例


Posted in Python onOctober 24, 2016

在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。

我们最常规的做法就是通过鼠标右键,选择另存为。但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度。好吧~!其实你很厉害的,右键查看页面源代码。

我们可以通过python 来实现这样一个简单的爬虫功能,把我们想要的代码爬取到本地。下面就看看如何使用python来实现这样一个功能。

一,获取整个页面数据

首先我们可以先获取要下载图片的整个页面信息。
getjpg.py

#coding=utf-8
import urllib
def getHtml(url):
  page = urllib.urlopen(url)
  html = page.read()
  return html

html = getHtml("http://tieba.baidu.com/p/2738151262")
print html

Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据。首先,我们定义了一个getHtml()函数:

urllib.urlopen()方法用于打开一个URL地址。

read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。执行程序就会把整个网页打印输出。

二,筛选页面中想要的数据
Python 提供了非常强大的正则表达式,我们需要先要了解一点python 正则表达式的知识才行.

假如我们百度贴吧找到了几张漂亮的壁纸,通过到前段查看工具。找到了图片的地址,如:src=”http://imgsrc.baidu.com/forum......jpg”pic_ext=”jpeg”

python实现简单爬虫功能的示例

修改代码如下:

import re
import urllib

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

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")
print getImg(html)

我们又创建了getImg()函数,用于在获取的整个页面中筛选需要的图片连接。re模块主要包含了正则表达式:

re.compile() 可以把正则表达式编译成一个正则表达式对象.

re.findall() 方法读取html 中包含 imgre(正则表达式)的数据。

运行脚本将得到整个页面中包含图片的URL地址。

三,将页面筛选的数据保存到本地

把筛选的图片地址通过for循环遍历并保存到本地,代码如下:

#coding=utf-8
import urllib
import re

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

def getImg(html):
  reg = r'src="(.+?\.jpg)" pic_ext'
  imgre = re.compile(reg)
  imglist = re.findall(imgre,html)
  x = 0
  for imgurl in imglist:
    urllib.urlretrieve(imgurl,'%s.jpg' % x)
    x+=1


html = getHtml("http://tieba.baidu.com/p/2460150866")

print getImg(html)

这里的核心是用到了urllib.urlretrieve()方法,直接将远程数据下载到本地。

通过一个for循环对获取的图片连接进行遍历,为了使图片的文件名看上去更规范,对其进行重命名,命名规则通过x变量加1。保存的位置默认为程序的存放目录。

程序运行完成,将在目录下看到下载到本地的文件。

python实现简单爬虫功能的示例

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python元组操作实例解析
Sep 23 Python
go语言计算两个时间的时间差方法
Mar 13 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
Jun 01 Python
详解Python装饰器
Mar 25 Python
如何使用Python自动控制windows桌面
Jul 11 Python
TensorFlow实现自定义Op方式
Feb 04 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
简单谈谈Python中的反转字符串问题
Oct 24 #Python
Python 内置函数complex详解
Oct 23 #Python
Python检测生僻字的实现方法
Oct 23 #Python
python 写入csv乱码问题解决方法
Oct 23 #Python
解决Python中字符串和数字拼接报错的方法
Oct 23 #Python
python 读写txt文件 json文件的实现方法
Oct 22 #Python
Python类属性的延迟计算
Oct 22 #Python
You might like
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
php中$this->含义分析
2009/11/29 PHP
php的字符串用法小结
2010/06/08 PHP
php中使用redis队列操作实例代码
2013/02/07 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
js加强的经典分页实例
2013/03/15 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
遗传算法python版
2018/03/19 Python
django+mysql的使用示例
2018/11/23 Python
Django model select的多种用法详解
2019/07/16 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
领导失职检讨书
2014/02/24 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
庆元旦活动总结
2014/07/09 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript