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制作词云的方法
Jan 03 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
tensorflow识别自己手写数字
Mar 14 Python
python生成ppt的方法
Jun 07 Python
Python 字符串与数字输出方法
Jul 16 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
Python中的引用和拷贝实例解析
Nov 14 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
python 绘制场景热力图的示例
Sep 23 Python
python中的插入排序的简单用法
Jan 19 Python
Python生成九宫格图片的示例代码
Apr 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
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP配置心得包含MYSQL5乱码解决
2006/11/20 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
粗略分析Python中的内存泄漏
2015/04/23 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
python range实例用法分享
2020/02/06 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
个人自我鉴定范文
2013/10/04 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
导师对论文的学术评语
2015/01/04 职场文书
城南旧事观后感
2015/06/11 职场文书
医院见习总结
2015/06/24 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android