百度图片爬虫

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

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

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

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

代码例如以下:

#!/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)

就酱。

时间: 2024-10-22 08:06:32

百度图片爬虫的相关文章

python写的百度图片爬虫

学了一下python正则表达式,写一个百度图片爬虫玩玩. 当技术遇上心术不正的人,就成我这样的2B青年了. python3.6开发,在Windows下需要安装vc2015动态库.下载地址:http://www.cr173.com/soft/146014.html 1 #/usr/bin/env python 2 #Guoyabin 3 #-*- coding:utf-8 -*- 4 import re,os 5 import requests 6 7 keyword=input('请输入搜索关键

百度图片爬虫-python版-如何爬取百度图片?

上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://5912119.blog.51cto.com/5902119/1771391 这一篇我想写写如何爬取百度图片的爬虫,这个爬虫也是:搜搜gif(在线制作功能点我) 的爬虫代码,其实爬虫整体框架还是差不多的,但就是会涉及到图片的的一些处理,还是花费了我不少时间的,所以我请阅读的本爬虫的孩子还是认真一些,毕竟程序猿都不容易啊.好的,我也不想多说,爬虫的代码我会分享到去转盘网,想下载本爬虫代码的孩子请点我下载,如果没有下

python 百度图片爬虫

# -*- coding:utf-8 -*- #https://blog.csdn.net/qq_32166627/article/details/60882964 import requests import os import pinyin def getManyPages(keyword,pages): params=[] for i in range(30,30*pages+30,30): params.append({ 'tn': 'resultjson_com', 'ipn': 'r

百度图片小爬虫

刚学习爬虫,写了一个百度图片爬虫当作练习. 环境:python3.6(请下好第三方库requests) 实现的功能:输入关键字,下载240张关键字有关的百度图片到本地的d:\百度图片\关键字\文件夹中. 百度图片的加载是ajax异步形式的,除了前面的一部分图片,后面靠下拉加载的图片都是异步从服务器端请求得到的.这些异步加载的图片的信息可以在一个个acjson的百度图片接口中,可以在开发者工具中xhr下找到这些文件. 接下来上代码: import requestsimport reimport o

【Python网络爬虫四】多线程爬取多张百度图片的图片

最近看了女神的新剧<逃避虽然可耻但有用> 被大只萝莉萌的一脸一脸的,我们来爬一爬女神的皂片. 百度搜索结果:新恒结衣 1.下载简单页面 通过查看网页的html源码,分析得出,同一张图片共有4种链接: {"thumbURL":"http://img5.imgtn.bdimg.com/it/u=2243348409,3607039200&fm=23&gp=0.jpg", "middleURL":"http://i

【Python网络爬虫四】通过关键字爬取多张百度图片的图片

最近看了女神的新剧<逃避虽然可耻但有用>,同样男主也是一名程序员,所以很有共鸣 被大只萝莉萌的一脸一脸的,我们来爬一爬女神的皂片. 百度搜索结果:新恒结衣 本文主要分为4个部分: 1.下载简单页面 2.爬取多张图片 3.页面解码 4.爬取过程排错处理 1.下载简单页面 通过查看网页的html源码,分析得出,同一张图片共有4种链接: {"thumbURL":"http://img5.imgtn.bdimg.com/it/u=2243348409,3607039200

如何用Python爬虫实现百度图片自动下载?

Github:https://github.com/nnngu/LearningNotes 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或者XPath表达式 正式编写 python 爬虫代码 效果预览 运行效果如下: 存放图片的文件夹: 需求分析 我们的爬虫至少要实现两个功能:一是搜索图片,二是自动下载. 搜索图片:最容易想到的是爬百度图片的结果,我们就上百度图片看看: 随便搜索几个关键字,可以看到已经搜索出来很多张图片: 分析网页

python3 TensorFlow训练数据集准备 下载一些百度图片 入门级爬虫示例

从百度图片下载一些图片当做训练集,好久没写爬虫,生疏了.没有任何反爬,随便抓. 网页: 动态加载,往下划会出现更多的图片,一次大概30个.先找到保存每一张图片的json,其对应的url: 打开调试,清空,然后往下划.然后出现: 点击左侧的链接,出现右边的详细信息,对应的就是URL.对这个url做请求即可.以下是代码: # -*- coding: utf-8 -*- # import tensorflow as tf # import os # import numpy as np import

Python_爬虫_百度图片

百度图片有些有编码问题,暂时不能爬取,多试几个 #思路:抓取图片地址,根据地址转存图片(注意名称):难点:转码 # -*- coding:utf-8 -*- from urllib import request,error import json,re # for page in range(4): # url = "http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=