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多线程(python多线程简明教程)
Jun 09 Python
Python3读取Excel数据存入MySQL的方法
May 04 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
5分钟 Pipenv 上手指南
Dec 20 Python
详解Python3定时器任务代码
Sep 23 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
new_zeros() pytorch版本的转换方式
Feb 18 Python
Python的历史与优缺点整理
May 26 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
Python爬虫制作翻译程序的示例代码
Feb 22 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访问Oracle815
2006/10/09 PHP
一个简单计数器的源代码
2006/10/09 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
vue购物车插件编写代码
2017/11/27 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python闭包函数定义与用法分析
2018/07/20 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
2014年上半年工作自我评价
2014/01/18 职场文书
经典团队口号
2014/06/06 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
运动会新闻报道稿
2015/07/22 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript