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 相关文章推荐
深入理解Python装饰器
Jul 27 Python
Python计时相关操作详解【time,datetime】
May 26 Python
浅谈Python 的枚举 Enum
Jun 12 Python
利用Python破解斗地主残局详解
Jun 30 Python
Python编程实现正则删除命令功能
Aug 30 Python
Python编程求质数实例代码
Jan 31 Python
numpy向空的二维数组中添加元素的方法
Nov 01 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
python中的反斜杠问题深入讲解
Aug 12 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
通过实例了解python__slots__使用方法
Sep 14 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
php实现监听事件
2013/11/06 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
js获取视频时长代码
2014/04/10 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
Vue渲染函数详解
2017/09/15 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
python生成随机mac地址的方法
2015/03/16 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Django框架模板的使用方法示例
2019/05/25 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
Java面试题汇总
2015/12/06 面试题
开业典礼主持词
2014/03/21 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
同意迁入证明模板
2014/10/26 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python