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中比较特别的除法运算和幂运算介绍
Apr 05 Python
python类和继承用法实例
Jul 07 Python
Python 文件操作的详解及实例
Sep 18 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
python批量识别图片指定区域文字内容
Apr 30 Python
Django模板Templates使用方法详解
Jul 19 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
python django中8000端口被占用的解决
Dec 17 Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
OpenCV-Python实现轮廓的特征值
Jun 09 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
长波有什么东西
2021/03/01 无线电
php ajax 静态分页过程形式
2011/09/02 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
JavaScript修改css样式style
2008/04/15 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
从零学Python之hello world
2014/05/21 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python函数局部变量用法实例分析
2015/08/04 Python
Python序列操作之进阶篇
2016/12/08 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
保护环境的建议书
2014/03/12 职场文书
少儿节目主持串词
2014/04/02 职场文书
我的画教学反思
2014/04/28 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
首都博物馆观后感
2015/06/05 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL
Python面向对象之成员相关知识总结
2021/06/24 Python
SQL注入详解及防范方法
2021/12/06 MySQL