简单实现python爬虫功能


Posted in Python onDecember 31, 2015

       在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。

我们最常规的做法就是通过鼠标右键,选择另存为。但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度。好吧~!其实你很厉害的,右键查看页面源代码。

我们可以通过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中的私有属性
Aug 21 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
Python中反射和描述器总结
Sep 23 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
python实现用户名密码校验
Mar 18 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
学python最电脑配置有要求么
Jul 05 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
Python控制鼠标键盘代码实例
Dec 08 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 Python
Python 阶乘详解
Oct 05 Python
python实现颜色空间转换程序(Tkinter)
Dec 31 #Python
基于python的Tkinter实现一个简易计算器
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 #Python
Python 功能和特点(新手必学)
Dec 30 #Python
python实现文本文件合并
Dec 29 #Python
You might like
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
从头学Python之编写可执行的.py文件
2017/11/28 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
python脚本后台执行方式
2019/12/21 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
python 模块导入问题汇总
2021/02/01 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
煤矿班组长岗位职责
2013/12/29 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
大学生社会实践方案
2014/05/11 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
2015年项目工作总结
2015/04/29 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL