简单实现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以环状形式组合排列图片并输出的方法
Mar 17 Python
Python导出DBF文件到Excel的方法
Jul 25 Python
Python进阶-函数默认参数(详解)
May 18 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 Python
Python FtpLib模块应用操作详解
Dec 12 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
Mar 17 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
Python中request的基本使用解决乱码问题
Apr 12 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
smarty中常用方法实例总结
2015/08/07 PHP
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python图算法实例分析
2016/08/13 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python进行两个表格对比的方法
2018/06/27 Python
python保存网页图片到本地的方法
2018/07/24 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
python内置模块collections知识点总结
2019/12/19 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
外贸业务员求职自荐信分享
2013/09/21 职场文书
优秀员工自荐信范文
2013/10/05 职场文书
校园门卫岗位职责
2013/12/09 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
青蓝工程实施方案
2014/03/27 职场文书
优质服务口号
2014/06/11 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL