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装饰器
May 09 Python
Python3字符串学习教程
Aug 20 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
python八皇后问题的解决方法
Sep 27 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
使用python PIL库实现简单验证码的去噪方法步骤
May 10 Python
python实现监控阿里云账户余额功能
Dec 16 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
Python urllib3软件包的使用说明
Nov 18 Python
python 操作excel表格的方法
Dec 05 Python
如何用python写个模板引擎
Jan 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
PHP setTime 设置当前时间的代码
2012/08/27 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
javascript 面向对象的JavaScript类
2010/05/04 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
javascript 回调函数详解
2014/11/11 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python对列表排序的方法实例分析
2015/05/16 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
京东国际站:JOYBUY
2017/11/23 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
中秋节活动总结
2014/08/29 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
求职意向书范本
2015/05/11 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python