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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
Python3 处理JSON的实例详解
Oct 29 Python
详解tensorflow训练自己的数据集实现CNN图像分类
Feb 07 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
pandas.loc 选取指定列进行操作的实例
May 18 Python
python中正则表达式 re.findall 用法
Oct 23 Python
python实现年会抽奖程序
Jan 22 Python
python快速排序的实现及运行时间比较
Nov 22 Python
Python autoescape标签用法解析
Jan 17 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
记录模型训练时loss值的变化情况
Jun 16 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
php单件模式结合命令链模式使用说明
2008/09/07 PHP
php动态生成函数示例
2014/03/21 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
Python的类实例属性访问规则探讨
2015/01/30 Python
详解python3中zipfile模块用法
2018/06/18 Python
python版本单链表实现代码
2018/09/28 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
用Python进行websocket接口测试
2020/10/16 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
《放飞蜻蜓》教学反思
2014/04/27 职场文书
社区创先争优承诺书
2014/08/30 职场文书
教师个人年终总结
2015/02/11 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书