简单实现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基础教程之字典操作详解
Mar 25 Python
Python复制目录结构脚本代码分享
Mar 06 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
Python根据成绩分析系统浅析
Feb 11 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
Django CSRF认证的几种解决方案
Mar 03 Python
Python导入模块包原理及相关注意事项
Mar 25 Python
Python hashlib模块的使用示例
Oct 09 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 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文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
django中的ajax组件教程详解
2018/10/18 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
JavaScript的原型继承详解
2015/02/15 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
Django框架多表查询实例分析
2018/07/04 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
2020/04/01 Python
Python如何获取文件路径/目录
2020/09/22 Python
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
介绍一下gcc特性
2015/10/31 面试题
银行授权委托书格式
2014/10/10 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
Python 键盘事件详解
2021/11/11 Python
Nginx实现会话保持的两种方式
2022/03/18 Servers
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS