简单实现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 socket多线程通讯实例分析(聊天室)
Apr 06 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
python实现堆和索引堆的代码示例
Mar 19 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
Python计算信息熵实例
Jun 18 Python
Python爬虫代理池搭建的方法步骤
Sep 28 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 30 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长字符串定义方法
2012/07/12 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
js下写一个事件队列操作函数
2010/07/19 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python 登录网站详解及实例
2017/04/11 Python
python编程线性回归代码示例
2017/12/07 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
python数据挖掘需要学的内容
2019/06/23 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
授权委托书
2014/07/31 职场文书
交通安全教育心得体会
2016/01/15 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
全新239军机修复记
2022/04/05 无线电