同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档:

#!/usr/bin/python

#_*_coding:utf-8_*_

import urllib

import urllib2

import re

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

#处理页面标签,去除图片、超链接、换行符等

class Tool:

#去除img标签,7位长空格

removeImg = re.compile('| {7}|')

#删除超链接标签

removeAddr = re.compile('|')

#把换行的标签替换为

replaceLine = re.compile('

|

|')

#把表格制表

替换为

replaceTD = re.compile('

')

#把段落开头换为 加两个空格

replacePara = re.compile('

')

#把换行符或双换行符替换为

replaceBR = re.compile('

|
')

#将其余标签剔除

removeET = re.compile('<.*?>')

#去除匹配到Tool

def replace(self,x):

x = re.sub(self.removeImg,"",x)

x = re.sub(self.removeAddr,"",x)

#x = re.sub(self.replaceLine," ",x)

#x = re.sub(self.replaceTD," ",x)

#x = re.sub(self.replacePara," ",x)

#x = re.sub(self.replaceBR," ",x)

x = re.sub(self.removeET,"",x)

#strip()将前后多余内容删除

return x.strip().encode('utf-8')

#百度贴吧爬虫练习

class BDTB:

#初始化,传入地址,是否只看楼主的参数

def __init__(self,baseUrl,seeLz,floorTag):

#base链接地址

self.baseURL = baseUrl

#是否只看楼主

self.seeLZ = '?seelz=' + str(seeLz)

#HTML剔除标签工具Tool

self.tool = Tool()

#全局file变量,文件写入操作对象

self.file = None

#楼层标识,初始化为1

self.floor = 1

#默认的标题,如果没有成功获取到标题的话则会用这个标题

self.defaultTitle = u"百度贴吧"

#是否写入楼分隔符的标记

self.floorTag = floorTag

#传入页码,获取该页帖子的代码

def getPage(self,pageNum):

try:

url = self.baseURL + self.seeLZ + '&pn=' + str(pageNum)

request = urllib2.Request(url)

response = urllib2.urlopen(request)

tbPage = response.read().decode('utf-8')

#print tbPage

return tbPage

#链接报错的原因

except urllib2.URLError, e:

if hasattr(e,"reason"):

print u'链接百度贴吧失败,错误原因:',e.reason

return None

#获取帖子标题

def getTitle(self,page):

page = self.getPage(1)

#正则匹配贴吧标题

pattern = re.compile('

(.*?)

',re.S)

result = re.search(pattern,page)

if result:

#输出标题

#print result.group(1)

return result.group(1).strip()

else:

return None

#获取帖子一共有多少页

def getPageNum(self,page):

page = self.getPage(1)

#正则匹配帖子总共有多少页

pattern = re.compile('

.*?(.*?)',re.S)

result = re.search(pattern,page)

if result:

#输出页码数

#print result.group(1)

return result.group(1).strip()

else:

print None

#获取帖子每一个楼层的内容

def getContent(self,page):

#正则匹配每一个楼层的内容

pattern = re.compile('

(.*?)

',re.S)

items = re.findall(pattern,page)

#floor = 1

contents = []

for item in items:

#将文本进行去除标签处理,同时在前后加入换行符

content = " " + self.tool.replace(item) + " "

contents.append(content.encode('utf-8'))

#print floor,u"楼-----------------------"

#print content

#floor += 1

return contents

#设置文件的标题

def setFileTitle(self,title):

#如果标题不是None,即成功获取到标题

if title is not None:

self.file = open(title + ".txt","w+")

else:

self.file = open(self.defaultTitle + ".txt","w+")

#向文件写入每一楼层的信息

def writeData(self,contents):

#遍历楼层

for item in contents:

if self.floorTag == '1':

#楼之间使用的分隔符

floorLine = " --------------" + str(self.floor) + "楼----------------- "

self.file.write(unicode(floorLine,"utf-8"))

self.file.write(unicode(item,"utf-8"))

self.floor += 1

def start(self):

indexPage = self.getPage(1)

pageNum = self.getPageNum(indexPage)

title = self.getTitle(indexPage)

self.setFileTitle(title)

if pageNum == None:

print "URL已失效,请重试"

return

try:

print "该帖子共有" + str(pageNum) + "页"

for i in range(1,int(pageNum) + 1):

print "正在写入第" + str(i) + "页数据"

page = self.getPage(i)

contents = self.getContent(page)

self.writeData(contents)

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 ")

floorTag = raw_input("是否写入楼层信息,是输入1,否输入0 ")

bdtb = BDTB(baseURL,seeLZ,floorTag)

bdtb.start()

python爬取贴吧所有帖子-Python爬虫爬取百度贴吧的帖子相关推荐

  1. 【Python】大数据挖掘课程作业1——使用爬虫爬取B站评论、弹幕与UP主的投稿视频列表

    [Python]大数据挖掘课程作业1--使用爬虫爬取B站评论.弹幕与UP主的投稿视频列表 数据挖掘部分的基本目标是:对于指定的UP主,能够获取其投稿视频列表:对于指定的视频,能够获取其视频标签.评论( ...

  2. python爬取微博评论点赞数_python 爬虫 爬微博 分析 数据

    python 爬虫 爬微博分析 数据 最近刚看完爱情公寓5,里面的大力也太好看了吧... 打开成果的微博,小作文一样的微博看着也太爽了吧... 来 用python分析分析 狗哥这几年微博的干了些啥. ...

  3. python多线程爬虫 爬取多个网页_python多线程爬虫爬取顶点小说内容(BeautifulSoup+urllib)...

    思路 之前写过python爬取起点中文网小说,多线程则是先把爬取的章节链接存到一个列表里,然后写一个函数get_text每次调用这个函数就传一个章节链接,那么就需要调用n次该函数来获取n章的内容,所以 ...

  4. 【Python随笔】一天搞定,爬虫爬取w3schools的sql语句案例集

    在很久以前的Easy Python系列中,介绍了通过爬虫手段爬取豆瓣电影信息的一种技术套路.今天故技重施,为了迎合先前做SQL语句分析的需要,决定爬取w3schools网站上面所有SQL案例,用作测试 ...

  5. python爬去智联招聘网_Python爬虫爬取智联招聘(进阶版)

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 图片:Westworld Season 2 作者 王强 简介 Python追随者, ...

  6. java爬取网易云歌单_爬虫爬取网易云歌单

    一.主题式网络爬虫设计方案 1.主题式网络爬虫名称:爬取网易云音乐歌单 2.主题式网络爬虫爬取的内容与数据特征分析 爬取网易云音乐歌单前十页歌单,轻音乐类型的歌单名称.歌单播放量.歌单链接.用户名称. ...

  7. beautifulsoup爬取网页中的表格_Python爬虫爬取BT之家找电影资源

    一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在 ...

  8. 爬一个人的所有微博 python_pyhton爬虫爬取微博某个用户所有微博配图

    前几天写了个java爬虫爬花瓣网,但是事后总感觉不够舒服,终于在今天下午写了个python爬虫(爬微博图片滴),写完之后就感觉舒服了,果然爬虫就应该用python来写,哈哈(这里开个玩笑,非引战言论) ...

  9. 爬一个人的所有微博 python_Python爬虫--爬取微博指定用户主页下的所有图片

    Python爬虫--爬取微博指定用户主页下的所有图片 写在前面 最近比较无聊,冒出来一个想法,去各大图片网站爬取大妹子的图片,然后自己写个简单的网站,按网站分类显示图片,第一个想到的是爬取知乎问题下面 ...

  10. python百度贴吧怎么爬取最早的帖子_Python爬虫爬取百度贴吧的帖子

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

最新文章

  1. JVM六大垃圾回收器特点及区别
  2. 【Immutable】拷贝与JSON.parse(JSON.stringify()),深度比较相等与underscore.isEqual(),性能比较...
  3. 诺基亚首款5G手机正式发布!还有Nokia 5310经典再现
  4. 官宣!苹果3月25日发布会邀请函派出:服务为主硬件为辅
  5. linux下实现对多个文件去重软件,Linux下大文件的排序和去重复
  6. 5G全息展示系统黑科技助力进博会,微美全息引领AR+AI全息通讯直播应用
  7. 卫星通信系统按照工作轨道分类
  8. 西门子cpu指示灯含义_CPU中的指示灯亮的意思
  9. 云信duilib之菜单
  10. Composer中的ThingWorx模型定义—建模
  11. Appium工作日记:Message: An element could not be located on the page using the given search parameters.
  12. sim7600ce 拨号上网测试_SIM7600CE TCP/IP连接与PPP拨号上网 4G上网
  13. 校园二手交易android软件 基于AndroidStudio
  14. 刺客列传鸿蒙记,高淳高级中学2020-2021学年高一上学期阶段测试语文试题.docx
  15. 物联卡是正规卡还是漏洞卡?一篇最简单明了的解释!
  16. 【人工智能】— 有信息搜索、最佳优先搜索、贪心搜索、A*搜索
  17. 【计算机网络】-【考研复试面试】-整合
  18. stm32【 1.3寸LCD屏幕(2)】
  19. 无锡新区新洲生活广场
  20. 西北工大被网络攻击,工业物联网安全更加值得警醒

热门文章

  1. C语言中常用的数学公式
  2. 【习题4-1 Uva1589】Xiangqi
  3. Spring Boot 应用系列 1 -- Spring Boot 2 整合Spring Data JPA和Druid,双数据源
  4. 【uoj#164】[清华集训2015]V 线段树维护历史最值
  5. 深入解析浏览器的幕后工作原理(四) DOM树
  6. 怎么解决深入学习PHP的瓶颈?
  7. 排序算法(还需补充)
  8. 未能加载文件或程序集“AspNetPager”或它的某一个依赖项。拒绝访问。(异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))...
  9. 设计模式:访问者(Visitor)模式
  10. KSQL和Flink SQL的比较