python爬取贴吧所有帖子-Python爬虫爬取百度贴吧的帖子
同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档:
#!/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爬虫爬取百度贴吧的帖子相关推荐
- 【Python】大数据挖掘课程作业1——使用爬虫爬取B站评论、弹幕与UP主的投稿视频列表
[Python]大数据挖掘课程作业1--使用爬虫爬取B站评论.弹幕与UP主的投稿视频列表 数据挖掘部分的基本目标是:对于指定的UP主,能够获取其投稿视频列表:对于指定的视频,能够获取其视频标签.评论( ...
- python爬取微博评论点赞数_python 爬虫 爬微博 分析 数据
python 爬虫 爬微博分析 数据 最近刚看完爱情公寓5,里面的大力也太好看了吧... 打开成果的微博,小作文一样的微博看着也太爽了吧... 来 用python分析分析 狗哥这几年微博的干了些啥. ...
- python多线程爬虫 爬取多个网页_python多线程爬虫爬取顶点小说内容(BeautifulSoup+urllib)...
思路 之前写过python爬取起点中文网小说,多线程则是先把爬取的章节链接存到一个列表里,然后写一个函数get_text每次调用这个函数就传一个章节链接,那么就需要调用n次该函数来获取n章的内容,所以 ...
- 【Python随笔】一天搞定,爬虫爬取w3schools的sql语句案例集
在很久以前的Easy Python系列中,介绍了通过爬虫手段爬取豆瓣电影信息的一种技术套路.今天故技重施,为了迎合先前做SQL语句分析的需要,决定爬取w3schools网站上面所有SQL案例,用作测试 ...
- python爬去智联招聘网_Python爬虫爬取智联招聘(进阶版)
点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 图片:Westworld Season 2 作者 王强 简介 Python追随者, ...
- java爬取网易云歌单_爬虫爬取网易云歌单
一.主题式网络爬虫设计方案 1.主题式网络爬虫名称:爬取网易云音乐歌单 2.主题式网络爬虫爬取的内容与数据特征分析 爬取网易云音乐歌单前十页歌单,轻音乐类型的歌单名称.歌单播放量.歌单链接.用户名称. ...
- beautifulsoup爬取网页中的表格_Python爬虫爬取BT之家找电影资源
一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在 ...
- 爬一个人的所有微博 python_pyhton爬虫爬取微博某个用户所有微博配图
前几天写了个java爬虫爬花瓣网,但是事后总感觉不够舒服,终于在今天下午写了个python爬虫(爬微博图片滴),写完之后就感觉舒服了,果然爬虫就应该用python来写,哈哈(这里开个玩笑,非引战言论) ...
- 爬一个人的所有微博 python_Python爬虫--爬取微博指定用户主页下的所有图片
Python爬虫--爬取微博指定用户主页下的所有图片 写在前面 最近比较无聊,冒出来一个想法,去各大图片网站爬取大妹子的图片,然后自己写个简单的网站,按网站分类显示图片,第一个想到的是爬取知乎问题下面 ...
- python百度贴吧怎么爬取最早的帖子_Python爬虫爬取百度贴吧的帖子
同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python #_*_coding:utf-8_*_ import urllib import ur ...
最新文章
- JVM六大垃圾回收器特点及区别
- 【Immutable】拷贝与JSON.parse(JSON.stringify()),深度比较相等与underscore.isEqual(),性能比较...
- 诺基亚首款5G手机正式发布!还有Nokia 5310经典再现
- 官宣!苹果3月25日发布会邀请函派出:服务为主硬件为辅
- linux下实现对多个文件去重软件,Linux下大文件的排序和去重复
- 5G全息展示系统黑科技助力进博会,微美全息引领AR+AI全息通讯直播应用
- 卫星通信系统按照工作轨道分类
- 西门子cpu指示灯含义_CPU中的指示灯亮的意思
- 云信duilib之菜单
- Composer中的ThingWorx模型定义—建模
- Appium工作日记:Message: An element could not be located on the page using the given search parameters.
- sim7600ce 拨号上网测试_SIM7600CE TCP/IP连接与PPP拨号上网 4G上网
- 校园二手交易android软件 基于AndroidStudio
- 刺客列传鸿蒙记,高淳高级中学2020-2021学年高一上学期阶段测试语文试题.docx
- 物联卡是正规卡还是漏洞卡?一篇最简单明了的解释!
- 【人工智能】— 有信息搜索、最佳优先搜索、贪心搜索、A*搜索
- 【计算机网络】-【考研复试面试】-整合
- stm32【 1.3寸LCD屏幕(2)】
- 无锡新区新洲生活广场
- 西北工大被网络攻击,工业物联网安全更加值得警醒
热门文章
- C语言中常用的数学公式
- 【习题4-1 Uva1589】Xiangqi
- Spring Boot 应用系列 1 -- Spring Boot 2 整合Spring Data JPA和Druid,双数据源
- 【uoj#164】[清华集训2015]V 线段树维护历史最值
- 深入解析浏览器的幕后工作原理(四) DOM树
- 怎么解决深入学习PHP的瓶颈?
- 排序算法(还需补充)
- 未能加载文件或程序集“AspNetPager”或它的某一个依赖项。拒绝访问。(异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))...
- 设计模式:访问者(Visitor)模式
- KSQL和Flink SQL的比较