简单实现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执行系统命令的常见方法(全)
Oct 22 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
Python贪心算法实例小结
Apr 22 Python
用Python3创建httpServer的简单方法
Jun 04 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
python实现按行分割文件
Jul 22 Python
python Django 创建应用过程图示详解
Jul 29 Python
matlab、python中矩阵的互相导入导出方式
Jun 01 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 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文件上传主要代码讲解
2013/09/30 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
python openpyxl模块的使用详解
2021/02/25 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
销售自荐信
2013/10/22 职场文书
后勤人员岗位职责
2013/12/17 职场文书
校长先进事迹材料
2014/02/01 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
人事科岗位职责范本
2014/03/02 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
周年庆典答谢词
2015/01/20 职场文书
社区国庆节活动总结
2015/03/23 职场文书
初级职称评定工作总结
2015/08/13 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
spring boot实现文件上传
2022/08/14 Java/Android