根据输入的贴吧地址,爬取想要该贴吧的图片,保存到本地文件夹,仅供参考:

#!/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爬虫爬取百度贴吧的图片的更多相关文章

  1. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  2. python爬虫-爬取百度图片

    python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...

  3. python爬虫---爬取王者荣耀全部皮肤图片

    代码: import requests json_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win ...

  4. 写一个python 爬虫爬取百度电影并存入mysql中

    目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...

  5. python爬虫—爬取百度百科数据

    爬虫框架:开发平台 centos6.7 根据慕课网爬虫教程编写代码 片区百度百科url,标题,内容 分为4个模块:html_downloader.py 下载器 html_outputer.py 爬取数 ...

  6. Python爬虫爬取百度贴吧的帖子

    同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...

  7. Python爬虫爬取百度翻译之数据提取方法json

    工具:Python 3.6.5.PyCharm开发工具.Windows 10 操作系统 说明:本例为实现输入中文翻译为英文的小程序,适合Python爬虫的初学者一起学习,感兴趣的可以做英文翻译为中文的 ...

  8. python爬虫–爬取煎蛋网妹子图片

    前几天刚学了python网络编程,书里没什么实践项目,只好到网上找点东西做. 一直对爬虫很好奇,所以不妨从爬虫先入手吧. Python版本:3.6 这是我看的教程:Python - Jack -Cui ...

  9. Python 爬虫-爬取京东手机页面的图片

    具体代码如下: __author__ = 'Fred Zhao' import requests from bs4 import BeautifulSoup import os from urllib ...

随机推荐

  1. mac系统下mysql开机启动总是3307

    修改了mysql的my.cnf可还是不行,启动后就是3307,必须关掉再启动. 觉得可能是mac系统在哪里写死了开机启动项. http://queforum.com/mysql/1012987-mys ...

  2. 拓扑排序 - 并查集 - Rank of Tetris

    Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球 ...

  3. ZeroMQ接口函数之 :zmq_send_const – 从一个socket上发送一个固定内存数据

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...

  4. crontab安装和用法(定时任务)

    crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行.通常 ...

  5. bzoj1724: [Usaco2006 Nov]Fence Repair 切割木板(贪心+堆)

    一开始被题目读错题= =以为每次只能割一块,那么就是从大到小切 但是其实是可以分为几堆来切的 所以可以逆着来,变为合并n个木板代价最小 易证每次找最小的两堆合并代价最小 用优先队列维护堆..偷偷懒= ...

  6. jQuery文本段落展开和折叠效果

    <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...

  7. 经典的javascript函数实例,css的. #区别

    先贴javascript经典例子代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  8. Struts2 OGNL 字符串自定义转化对象细节

    要使用Struts2的自定义对象转化,需要几个要点: 1.要有继承DefaultTypeConverter的实现类,要重写convertValue,并且参数value转化而来的String是Strin ...

  9. selenium python 安装

    环境为Win64位系统,默认已经安装python2.7到D:\Python27,此次使用的浏览器为chrome 下面是selenium的安装和chromedriver.exe的下载 1.安装selen ...

  10. jvm性能参数与调优

    本文中的参数并齐全,看了http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html的相关文章写得很好,可以看一看 1.jvm堆内存简 ...