软件研发与应用j … S0l1『WAREDEVELOPMENT&APPLICATION 一 … …… …… Python3编程实现网络图片爬虫 涂辉。王锋,商庆伟 (徐州 业职业技术学院现代教育技小= I 心,汀苏徐州221 140) 摘 要:在大数据时代,网络数据的获取需要通过计算机自动实现,网络爬虫可实现对网页上的图片的抓 取 Pyth(m语言的易读、易学、可移植等优点使其成为人_Y-智能大潮下最炙手可热的语言之一 通过 Python3实现网络爬虫,并将获取到的图片自动存储到本地,为后续的机器学习、人工智能奠定了数据基础 关键词:I)、,thon3语言;网络爬虫;图片抓取 l概述 近年米,随肴信息技术的进步. 联网发展突琶猛 进,中国已有接近7亿万联 用户.互联网也 深入刽 各地区各行业,爆炸式的数据增长使传统的依靠信息管 理人员人T扶取数据变得不 能 网络爬虫I—l是一种按 照特定的规则,对网络信息『j动抓取的程序或者脚小, 也被称为网络机器人或网负蜘蛛。网络爬虫通过模仿浏 览器对网页的URL地址访问的方式进行,用户小需要 人¨1l 操纵即可F1动地获取所需要的数据I:II l Python语言自1991年诞生,现 发展到3.6.3版 本,因其功能强大、开源、语法简洁清晰,几乎存口 所有的操作系统上都能够运行 I,具有十富币Il强大的库 被逐渐J 泛应』}J于系统管婵任务的处婵和Weh编程If】. 2017年7月20 H IEEE发布2017年编 语言排行榜 . Python高居甬 位,超过c语言与Java 使用最新版本Python编写爬虫模拟浏览器访问[j 标页面获取目标陶片数据,并将这些【炱1片保存到本地丈 件夹,为进一步的图像数据挖掘与数据分析提供壤础 使刚爬虫程序能够让数据分析人员将更多的精力放 数 据分析上面,而不是 程序开发的细节I。肖耗大 时 『HJ,同时爬虫还能够对海量数据起到过滤作用 、 2 Python爬虫的设计 爬虫是抓取糗事百科j-的JPG及GIF格式趣 ,方 便离线观看。爬虫用的是Python3.X版水肝发,主要J}j 到_r urllib的request和 【,s模块,模块是一个包禽变 皱、函数或类的定义的程序文件, 足Python大 的 第一-97库支持使得Pythm 开发简单易学,使川模块 只需要通过import导人模块即可。 urllib模块提供了从万维网中扶取数据的高层接I1161. 用urlopen()打开一个URI 时.就相 j于用Pvth( n内 缱的open()打丌一个文什。 1不同的足,前者接收一 个u… 作为参数,并且没/f 办法x,j ̄j 圩的文件流进仃 seek操作,而 接收的是一个本地义件 抓取到网贝 有包括动㈣、图片、义卡、Ij等各种格式 元素 这些义什}J支爬虫抓取下来后.需要将其中的¨标 信息提取…来 J 则表达式足一种在义小【11寻找特定 符f 方法,能够准确地提取文档的特定价息。re模块 (regular expression)是Python巾支持l 则表达式的库 PatlenI实例足re处理文本 获得 配结果的必须步骤, Re厍必须先将J1j户给定的』 则表达式: 符串编译为 Pattm,n实例,Pattern实例也被称为Match 例,它是程 序扶得信息 作其他操作的旗础 OS模块足一个Python的系统编 的操作模块,提 供rt-富的适川下Mac・、NT、或Pc)six的操作系统函 数,这个模块允许程序独 地 操作系统环境、义件系 统、川户数据库以及权限进 交互 2.1 爬虫准备 样导入所需的urllib、re、os库 import urllib.request,re OS #定义抓取到的文件保存路径 My_targetPath=”F:\kpython3.5学习kk01一spider\\qiubai“ #目标网址 My_url= http://www.qiushibaike.comf 2.2伪装成浏览器 对于一 网站,{c¨果 足从浏览器发 的请求,则 得 剑响应 所以,需要将爬虫程序发 的请求伪装成 浏览}朴} User Agent是Http 议中的一部分,中文牟j叫 作者简介:涂辉(1987一), ,硕士,研究方向:数 据挖掘。 收稿日期:2017-09一l3 奠_翟2技0圬17与.2娃3 21 ………………一…………… ………………………… 实用第一 智慧密集 。 , … 用户代理,属于头域的一部分。在访问网站时通过用户 for It in s: re代理向服务器提供月j户使片】的操作系统及版本、浏览器 版本及类型、浏览器的内核等信息标识。通过改写us eF—Agent将Python爬虫伪装成浏览器。 Myheaders={ _m1=re.search(r src:”(. _,.t) Myiturl=re_m1.group(1) print(My_itur1) tr、,: urllib.request urlretrieve(My—iturl,saveFile(My_itur1)} except: User—Agent : Mozilla/5.0《Windows NT 1 O.O:Triden ̄.O:rv:1 1.O:JuziBrowser)like Gecko Chrome/51.0.27o4.63 Safari/537.36 print( 失败 ) 2.5多页面抓取 ) 2.3存储图片函数 分析目标页面发现,多个连续的页面只是url的某 通过之前导入的OS模块操作 片的存储路径,文 个值不同.通过设置抓取网页的起始页与终止页的页码 范围与u 相同部分进行拼接,模拟浏览器的分页操作, 实现对相应的多个页码的所有数据的抓取。 #main .中主要用到OS.path.isdir来判断指定对象目录是否存在, 如果不是指定文件日录使用OS.mkdir来创建目录,最后 使用OS.path.join将目录与图片的存储名称连接。 def saveFile(path): if_hame_;= .. 1. #对保存路径有效性的识别 .f not os.path。isdir(My_targetPath): OS.mkdir(MVjargetPath) #来判断本py程序是直接运行还是被引用 sta_page=1#网站的起始页 end_page=500#网站的终止页 w ile staoage<end_page: _}}设置抓取到的图片的存储路径 Mypos=path.rindex(/ ) _nt( 现在爬取的是第 +str(sta_page)-I-“页。) My url=url+str(sta_page)+ .ht『 _t=OS.path.join(My_targetPath,path[My_pos+l:1) return t spiderqiubai(My_ur1) _stapage尊=, _2.4爬虫主体函数 3结语 通过Python3编程实现了网络爬虫对指定网页的 jPg和gif格式图片的抓取,通过实验对914个页面的 首先通过urllib的request和urlopen方法模拟浏览 器访问目标页面获取网页数据.然后对数据进行适当的 编码操作,其次通过空白符切割网页数据。使用正则表 7312张图片共计3.41G进行抓取,在2O分钟之内完成 达式获取jpg和gif格式的文件,最后将获取的图片文 件存储到本地指定的文件夹。 def spiderqiubai(ur1): _所有图片保存到本地。实验表明本程序能有效实现相应 爬虫功能。而且这种爬虫编程简洁明了,对于初学者有 Myreq=urItib,request。Request(url罩My=ur1 _很好的指导作用。对于专注数据分析的研究者能够节省 编码时间,将更多精力投入数据挖掘中。 参考文献 headers=Myheaders) _Myres=urlIib request urlopen(My_req) _Mydata=Myres.readO __【1】刘金红,陆余良.主题网络爬虫研究综述『J].计 算机应用研究,2007,(10):26—29+47. 【2J李琳.基于Python的网络爬虫系统的设计与实现 data=Mydata.decode( GBK3 #本网页不适合utf一8编码,只能用GBK编码 样对母网页内容处理, k=re.split(r、s+ .data) 『J1.信息通信,2017,(09):26—27. 【3】周德懋,李舟军.高性能网络爬虫:研究综述【J]. 计算机科学,2009,36(08):26—29+53. [4】陈琳,任芳.基于Python的新浪微博数据爬虫程序 设计【J】.信息系统工程,2016,(09):97—99. S=【】 si=【】 for i in k: .f《re.match(r . ?jPg ,i)or re.match(r*?gif i))= S append(i) 【6]王弘博,孙传庆.Python3程序开发指南.2版.北 京:人民邮电出版社 201 1. 样获取这些图片链接的内容,并保存成本地图片 、、 与曩