博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百度图片爬虫
阅读量:6417 次
发布时间:2019-06-23

本文共 2422 字,大约阅读时间需要 8 分钟。

功能说明:依次输入keyword。開始页码,结束页码(每页6张图)

当中,因为设定了timeout和其它错误检測,所以每页不一定6张都能爬下来。

有需求的拿去爬图用吧,仅供交流參考。不要乱爬,以免百度专门封堵。想用的都用不了了。

以后假设有时间再用pyqt做成界面吧。

代码例如以下:

#!/usr/bin/env python#! -*- coding: utf-8 -*-import urllib,urllib2import reimport time#返回网页源码def getHtml(url):	# print 'Start Downloading Html Source Code'	user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'	headers = {'User-Agent' : user_agent }	req = urllib2.Request(url,headers = headers)	html = urllib2.urlopen(req)	srcCode = html.read()	# print srcCode	return srcCode'''''''''''''''''''''# 下载网页中的图片# srcCode : 输入的包括图片绝对路径(可下载链接)的网页源码# page : 仅仅是用于给下载的图片命名用'''''''''''''''''''''def getImg(srcCode,page):	#对网页中图片建立正则	pattern = re.compile(r'

class="i".*?src=".*?".*?

alt="百度图片" t=""/></a>') #图片完整路径存储为list imgSrcHtml = pattern.findall(srcCode) # print imgSrcHtml num = 0 + 6 * (page-1) # count = endPage - startPage # for x in xrange(1,count): for i in imgSrcHtml: # 补全链接,得到完整地址 i = 'http://image.baidu.com' + i print i imageSrc = getHtml(i) # print imageSrc imagePattern = re.compile(r'<a.*?href="(.*?\.jpg)">原图.*?

</a>') # 层层进入。得到图片的链接 imageRealSrc = imagePattern.findall(getHtml(i)) num += 1 for src in imageRealSrc: user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent' : user_agent } req = urllib2.Request(src,headers = headers) print "正在下载" print src try: html = urllib2.urlopen(req,timeout = 10) except Exception, e: print '抛出异常为:' + str(e) num += 1 break try: f = open("./" + '%s.jpg' % num, 'w+b') f.write(html.read()) f.close() except Exception, e: print '抛出异常为:' + str(e) # num +=1 break print '所有任务完毕!' ur = 'http://image.baidu.com/i?tn=wisemidresult&ie=utf8&word=%E5%AE%A4%E5%86%85%E6%99%AF&pn=0&rn=6&size=mid&fmpage=result&pos=next' # startPage: 起始页码 # endPage: 终止页面 # 每页有六张图 def getPageImg(startPage,endPage,url): for x in xrange(startPage,endPage): print "正在下载第" + str(x) + "页" # 最早是爬的美食图片 meishi = url + "pn=%s&rn=6&gsm=6&size=mid&fmpage=result&pos=next" % ((x-1)*6) print meishi getImg(getHtml(meishi),x) keyWord = raw_input(unicode("请输入搜索内容\n",'utf8')) startPage = int(raw_input(unicode("从第几页開始? 请输入数字\n",'utf8'))) endPage = int(raw_input(unicode("到第几页结束? 请输入数字\n",'utf8'))) # 将keyword包括进网页前半部分 # 后半部分在getPageImg中处理, 后半部分包括页码 myurl = "http://image.baidu.com/i?tn=wisemidresult?tn=wisemidresult&ie=utf8&word=%s&" % keyWord getPageImg(startPage,endPage,myurl)

就酱。

转载于:https://www.cnblogs.com/gavanwanggw/p/7323262.html

你可能感兴趣的文章
LLVM3.8停止了旧Windows版本,取消Autoconf,改进Clang
查看>>
AR增强现实将重塑出版行业的未来
查看>>
云栖科技评论第29期:《MIT科技评论》杂志公布2017年度全球十大突破技术
查看>>
Show/hide mouse cursor
查看>>
34、重分布配置实验之分发列表distribute-list
查看>>
命令模式-对象行为型
查看>>
VS2017配置、提高生产力、代码辨识度 (工欲善其事必先利其器)新手必备!
查看>>
[Phoenix] 七、如何使用自增ID
查看>>
Server2008 安装 Zune
查看>>
replication监控及自动故障切换
查看>>
路由基本配置(上)
查看>>
windows上传文件到linux乱码解决
查看>>
Dao 常用方法记录
查看>>
fpm打包zabbix-agent
查看>>
Windows Server 2016 DNS Policy Split-Brain 3
查看>>
用脚本实现1+2+3...100
查看>>
pythopn List(列表)
查看>>
blat命令行发邮件小工具
查看>>
学习笔记 十五: mariadb
查看>>
学习笔记 124: 预备知识总结
查看>>