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二分法实现实例
Nov 21 Python
日常整理python执行系统命令的常见方法(全)
Oct 22 Python
windows下ipython的安装与使用详解
Oct 20 Python
Python守护线程用法实例
Jun 23 Python
python发送邮件实例分享
Jul 28 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
利用Python进行异常值分析实例代码
Dec 07 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
Python日志处理模块logging用法解析
May 19 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
django restframework serializer 增加自定义字段操作
Jul 15 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
PHP 输出简单动态WAP页面
2009/06/09 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
详解Python文本操作相关模块
2017/06/22 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
百度JavaScript笔试题
2015/01/15 面试题
几个MySql的面试题
2013/04/22 面试题
经济系大学生求职信
2013/10/01 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
导师推荐信范文
2014/05/09 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python