Python爬虫爬取百度贴吧的图片
根据输入的贴吧地址,爬取想要该贴吧的图片,保存到本地文件夹,仅供参考:
#!/usr/bin/python
#_*_coding:utf-8_*_
import urllib
import urllib2
import re
import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
#下载图片
class GetPic:
	#页面初始化
	def __init__(self,baseUrl,seelz):
		#base链接地址
		self.baseURL = baseUrl
		#是否只看楼主
		self.seeLZ = '?seelz=' + str(seelz)
		#self.tool = tool.Tool()
#获取页面内容
	def getPage(self,page):
		try:
			url = self.baseURL + self.seeLZ + '&pn=' + str(page)
			request = urllib2.Request(url)
			response = urllib2.urlopen(request)
			html = response.read().decode('utf-8')
			#print html
			return html
		#链接报错的原因
		except urllib2.URLError, e:
			if hasattr(e,"reason"):
				print u'链接百度贴吧失败,错误原因:',e.reason
				return None
#获取帖子一共有多少页
	def getPageNum(self,page):
		page = self.getPage(1)
		pattern = re.compile('<li class="l_reply_num.*?</span>.*?<span.*?>(.*?)</span>',re.S)
		result = re.search(pattern,page)
		if result:
			#输出页码数
			#print result.group(1)
			pagenum = result.group(1).strip()
			#print result.group(1)
			return pagenum
		else:
			print None
#获取页面的图片
	def getPic(self,page):
		html = self.getPage(page)
		#正则匹配图片的地址
		reg = r'<img class="BDE_Image".*?src="(.*?)".*?>'
		pattern = re.compile(reg)
		items = re.findall(pattern,html)
		return items
def savePic(self,page):
		#pageNum = self.getPageNum(1)
		items = self.getPic(page)
		
		x = 0
		for item in items:
			print item
			#根据实际保存图片的地址进行修改
			urllib.urlretrieve(item,'D:\learn\python-bqb\%s-%s.jpg' % (page,x))
			x += 1
def Start(self):
		#indexPage = self.getPage(1)
	 	pageNum = self.getPageNum(1)
	 	if pageNum == None:
	 		print "URL已失效,请重试"
	 		return 
	 	try:
	 		print "该帖子共有" + str(pageNum) + "页"
	 		for i in range(1,int(pageNum) + 1):
	 			print "正在写入第" + str(i) + "页数据"
	 			#self.getPage(i)
	 			#self.getPic(i)
	 			self.savePic(i)
	 			
	 	except IOError,e:
	 		print "写入异常,原因" + e.message
	 	finally:
	 		print "写入任务完成"
print u"请输入帖子的代号"
baseURL = 'http://tieba.baidu.com/p/' + str(raw_input(u'http://tieba.baidu.com/p/'))
seeLZ = raw_input("是否只获取楼主发表的图片,是输入1,否输入0\n")
bdtp = GetPic(baseURL,seeLZ)
bdtp.Start()
		
'''
	#创建目录保存图片
	def  mkdir(self,path):
		path = path.strip()
		#判断路径是否存在
		#存在 返回True
		#不存在 返回False
		isExists = os.path.exists(path)
		#判断结果
		if not isExists:
			#如果不存在则创建目录
			print u"新创建了目录名为:" + path
			#创建目录操作函数
			os.makedirs(path)
			return True
		else:
			#如果目录已存在不创建,提示目录已存在
			print u"目录" + path + "已存在"
			return False
#保存图片
	def savePic(html,items):
		x = 0
		for item in items:
			filename = item + '.jpg'
			while open(filename,'wb') as fp:
				img = getPic(html)
				fp.write(img)
'''
Python爬虫爬取百度贴吧的图片的更多相关文章
- Python爬虫 - 爬取百度html代码前200行
		
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
 - python爬虫-爬取百度图片
		
python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...
 - python爬虫---爬取王者荣耀全部皮肤图片
		
代码: import requests json_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win ...
 - 写一个python 爬虫爬取百度电影并存入mysql中
		
目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...
 - python爬虫—爬取百度百科数据
		
爬虫框架:开发平台 centos6.7 根据慕课网爬虫教程编写代码 片区百度百科url,标题,内容 分为4个模块:html_downloader.py 下载器 html_outputer.py 爬取数 ...
 - Python爬虫爬取百度贴吧的帖子
		
同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...
 - Python爬虫爬取百度翻译之数据提取方法json
		
工具:Python 3.6.5.PyCharm开发工具.Windows 10 操作系统 说明:本例为实现输入中文翻译为英文的小程序,适合Python爬虫的初学者一起学习,感兴趣的可以做英文翻译为中文的 ...
 - python爬虫–爬取煎蛋网妹子图片
		
前几天刚学了python网络编程,书里没什么实践项目,只好到网上找点东西做. 一直对爬虫很好奇,所以不妨从爬虫先入手吧. Python版本:3.6 这是我看的教程:Python - Jack -Cui ...
 - Python 爬虫-爬取京东手机页面的图片
		
具体代码如下: __author__ = 'Fred Zhao' import requests from bs4 import BeautifulSoup import os from urllib ...
 
随机推荐
- Shell 编程基础之 && 与 ||
			
一.引言 Shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? == 1 时,表示执行失败.有时候,下一条命令 ...
 - java基础-泛型1
			
浏览以下内容前,请点击并阅读 声明 泛型的使用能使类型名称作为类或者接口定义中的参数,就像一般的参数一样,使得定义的类型通用性更强. 泛型的优势: 编译具有严格的类型检查 java编译器对于泛型代码的 ...
 - 【系统篇】从C/C++语言到进程启动背后的故事
			
我们需要运行一个程序或者软件,双击之即可完成.不过从你双击到程序的窗口产生的这“短暂”的时间内,Windows为你做了很多的工作. 首先,系统有一个进程监测到了你的双击操作,这个进程就是系统shell ...
 - 2016  CCPC长春重现赛
			
1.2016中国大学生程序设计竞赛(长春)-重现赛 2.总结:会做的太少,应变能力也不行,或者说猜题目的能力不行 02 水 04 HDU 5914 Triangle 1.题意:1~n,n个数,问 ...
 - 实现携程X分钟前有人预定功能
			
实现携程X分钟前有人预定功能 原理:利用cookie与计时器两部分: 首先,进入页面,x会被随机数赋值,赋值后x会一分钟加1,直到加到60,再从1开始累加. 页面是否相同是根据页面的url后的id值判 ...
 - event
			
当一个事件被调用后,它会收到一个参数,第一个参数就是事件对象,事件对象包含type, target, timestamp三个. 类型:事件的名称,例如:点击目标:事件的目标元素时间戳:事件触发的时间
 - [转]Flash Player、AIR、Flex SDK 大全
			
平时不断看到有朋友在各种论坛.空间.知道.群里求 Flash 平台各种版本的运行时(Flash Player)和SDK(Flex.AIR).今天就看到不下10次!所以决定把 Macromedia.Ad ...
 - MySQL查询语句(select)详解(1)
			
1.查询记录 select*from 表名 [where 条件];eg:select*from students;//查询 students 表中所有记录,所有字段的值都显示出来select fiel ...
 - jQuery实现的简单小功能(实用)
			
1.返回顶部使用JQuery的animate和scrollTop方法可以创建简单地返回顶部的动画: // Back to top $('#top').click(function (e) { e.pr ...
 - poj2389-Bull Math(大整数乘法)
			
一,题意: 大整数乘法模板题二,思路: 1,模拟乘法(注意"逢十进一") 2,倒序输出(注意首位0不输出) 三,步骤: 如:555 x 35 = 19425 5 5 5 5 5 ...