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 相关文章推荐
Linux下编译安装MySQL-Python教程
Feb 02 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
详解 Python 读写XML文件的实例
Aug 02 Python
python opencv之分水岭算法示例
Feb 24 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
Python从函数参数类型引出元组实例分析
May 28 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
Python3自定义json逐层解析器代码
May 11 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
python中最小二乘法详细讲解
Feb 19 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公用函数列表[正则]
2007/02/22 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
帝国cms常用标签汇总
2015/07/06 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
jquery 图片轮换效果
2010/07/29 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
体育学院毕业生自荐信
2013/11/03 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
分公司经理任命书
2014/06/05 职场文书
公司与个人合作协议书
2016/03/19 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
Spring实现内置监听器
2021/07/09 Java/Android