简单实现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中列表的一些基本操作知识汇总
May 20 Python
Python3实现的画图及加载图片动画效果示例
Jan 19 Python
Python之reload流程实例代码解析
Jan 29 Python
基于python requests库中的代理实例讲解
May 07 Python
Python实现的个人所得税计算器示例
Jun 01 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
Python中类的创建和实例化操作示例
Feb 27 Python
django的csrf实现过程详解
Jul 26 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
pandas DataFrame运算的实现
Jun 14 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 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连接Oracle for NT 远程数据库
2006/10/09 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
php 发送带附件邮件示例
2014/01/23 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
用console.table()调试javascript
2014/09/04 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
Vue实现导出excel表格功能
2018/03/30 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
python访问类中docstring注释的实现方法
2015/05/04 Python
python计算文本文件行数的方法
2015/07/06 Python
Python端口扫描简单程序
2016/11/10 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
最新远光软件笔试题面试题内容
2013/11/08 面试题
吸烟检讨书2000字
2014/02/13 职场文书
文员求职信
2014/07/15 职场文书
殡葬服务心得体会
2014/09/11 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
2015最新民情日记范文
2015/06/26 职场文书