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中操作字典之update()方法的使用
May 22 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
python3.x实现发送邮件功能
May 22 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
python 生成器和迭代器的原理解析
Oct 12 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
详解KMP算法以及python如何实现
Sep 18 Python
用python爬虫批量下载pdf的实现
Dec 01 Python
Pandas DataFrame求差集的示例代码
Dec 13 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中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
js调用图片隐藏&显示实现代码
2013/09/13 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
移动端js图片查看器
2016/11/17 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
详解基于mpvue的小程序markdown适配解决方案
2018/05/08 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
CSS3控制HTML元素动画效果
2014/02/08 HTML / CSS
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
生产厂厂长岗位职责
2013/12/25 职场文书
办护照工作证明范本
2014/01/14 职场文书
网吧消防安全制度
2014/01/28 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
幼儿生日活动方案
2014/08/27 职场文书
股权转让协议范本
2014/12/07 职场文书
经理岗位职责
2015/02/02 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
社会实践活动总结格式
2015/05/11 职场文书
大学生读书笔记范文
2015/07/01 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
高三物理教学反思
2016/02/20 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
python中数组和列表的简单实例
2022/03/25 Python