简单实现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的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
Python2中文处理纪要的实现方法
Mar 10 Python
详解python中的装饰器
Jul 10 Python
使用python实现滑动验证码功能
Aug 05 Python
python django 原生sql 获取数据的例子
Aug 14 Python
pygame实现五子棋游戏
Oct 29 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
python基于event实现线程间通信控制
Jan 13 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
如何使用python自带IDLE的几种方法
Oct 10 Python
如何用python识别滑块验证码中的缺口
Apr 01 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
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
深入解析神经网络从原理到实现
2019/07/26 Python
Python如何使用字符打印照片
2020/01/03 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
医学生自荐信
2013/12/03 职场文书
社团文化节策划书
2014/02/01 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
药店采购员岗位职责
2014/09/30 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
李强优秀员工观后感
2015/06/16 职场文书
2016新年感言
2015/08/03 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python
2022微信温控新功能上线
2022/05/09 数码科技