百度图片爬虫

news/2024/7/19 10:48:50 标签: 爬虫, c/c++, python

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

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

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

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

代码例如以下:

python">#!/usr/bin/env python
#! -*- coding: utf-8 -*-
import urllib,urllib2
import re
import 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'<a href="(.*?)"><img.*?

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


http://www.niftyadmin.cn/n/995171.html

相关文章

AMD步步紧逼:Intel X299平台有望提前登场

4月10日消息 虽然Intel明面上对AMD的步步紧逼没有多大动作&#xff0c;但是暗地里已经开始在应对了&#xff0c;比如说降低7350K和7700K的价格。而现在对于高端用户来说&#xff0c;X299平台或许会因为AMD的给力提前发布。 根据此前安排&#xff0c;Intel下一代桌面发烧处理器S…

将CAD转PDF的方法有哪些

2019独角兽企业重金招聘Python工程师标准>>> CAD文件现在是我们工作中很常见的&#xff0c;而对于CAD文件&#xff0c;我们比较常见的转换类型有CAD转PDF、CAD转图片还有CAD的版本转换&#xff0c;在这些类型中&#xff0c;CAD转PDF是用的最多的&#xff0c;下面就和…

线程间操作无效: 从不是创建控件的线程访问它

下面介绍几种跨线程调用控件的方法 第一种办法&#xff1a;禁止编译器对跨线程访问做检查 这是最简单的办法&#xff0c; 相当于不检查线程之间的冲突&#xff0c;允许各个线程随便乱搞&#xff0c;最后Lable1控件的值是什么就难以预料了 (不推荐使用这种方法) public Form1(){…

Fragment FragmentManager FragmentTransaction 详解

Fragment FragmentManager FragmentTransaction 详解 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计. 平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragm…

使用Moblin SDK开发应用程序 – Moblin软件架构

在正式介绍之前先来看看Moblin的软件架构图。最底层的硬件、BIOS、内核和驱动没啥好多谈的&#xff0c;就从应用程序开发者最关心的Application Framework谈起好了。Moblin本质上是桌面Linux的一个精简而非嵌入式Linux的增强&#xff0c;因此Moblin的应用程序框架也与桌面Linux…

selenium+python自动化79-文件下载(SendKeys)

前言 文件下载时候会弹出一个下载选项框&#xff0c;这个弹框是定位不到的&#xff0c;有些元素注定定位不到也没关系&#xff0c;就当没有鼠标&#xff0c;我们可以通过键盘的快捷键完成操作。 SendKeys库是专业的处理键盘事件的&#xff0c;所以这里需要用SendKeys解决 只支持…

Android View视图系统分析和Scroller和OverScroller分析

Android View视图系统分析和Scroller和OverScroller分析 View 视图分析 首先&#xff0c;我们知道&#xff0c;在Android中所有的视图资源&#xff08;不管是Layout还是View&#xff09;&#xff0c;最终的父类都是View类。各式各样的Layout只是对ViewGroup的一中特别的实现…

小米空净发布,人人都在讨论的“Balmuda”是一家怎样的公司

因为小米空气净化器的发布&#xff0c;一家叫“Balmuda/巴慕达”的日本小众家电厂商在国内硬件圈火了&#xff0c;大家都在讨论Balmuda的空气净化器产品Air Engine/安之风。原因不多说&#xff0c;不知道的童鞋在微博、知乎上刷一下很快就能弄明白。 不过你可能不太了解&#x…