简单实现python爬虫功能


Posted in Python onDecember 31, 2015

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

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

我们可以通过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 相关文章推荐
Python Queue模块详解
Nov 30 Python
详解Python中with语句的用法
Apr 15 Python
对python Tkinter Text的用法详解
Oct 11 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
python字符串替换第一个字符串的方法
Jun 26 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
Series和DataFrame使用简单入门
Nov 13 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
使用python向MongoDB插入时间字段的操作
May 18 Python
python运行脚本文件的三种方法实例
Jun 25 Python
python实现颜色空间转换程序(Tkinter)
Dec 31 #Python
基于python的Tkinter实现一个简易计算器
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 #Python
Python 功能和特点(新手必学)
Dec 30 #Python
python实现文本文件合并
Dec 29 #Python
You might like
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
python多线程同步实例教程
2019/08/11 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
如何基于python实现归一化处理
2020/01/20 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
html5 视频播放解决方案
2016/11/06 HTML / CSS
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
家长对孩子评语
2014/01/30 职场文书
大学生暑期实践感言
2014/02/26 职场文书
科学发展观演讲稿
2014/09/11 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书