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中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
解密Python中的描述符(descriptor)
Jun 03 Python
Python读写配置文件的方法
Jun 03 Python
Python编程判断一个正整数是否为素数的方法
Apr 14 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
对python3新增的byte类型详解
Dec 04 Python
python二进制文件的转译详解
Jul 03 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
Python实现AES加密,解密的两种方法
Oct 03 Python
python 中[0]*2与0*2的区别说明
May 10 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截取中文字符串的问题
2006/07/12 PHP
以文本方式上传二进制文件的PHP程序
2006/10/09 PHP
PHPMailer安装方法及简单实例
2008/11/25 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
仿微博字符限制效果实现代码
2012/04/20 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
jquery实现动态画圆
2014/12/04 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
Python中使用不同编码读写txt文件详解
2015/05/28 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
python批量图片处理简单示例
2019/08/06 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
python解析多层json操作示例
2019/12/30 Python
Python的信号库Blinker用法详解
2020/12/31 Python
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
学校地质灾害防治方案
2014/06/10 职场文书
简历自荐信范文
2015/03/09 职场文书
学校中秋节活动总结
2015/03/23 职场文书
电影地道战观后感
2015/06/04 职场文书
团队拓展训练感想
2015/08/07 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL