对正则表达式要有更加深刻的研究,本程序对百度贴吧使用,但是截取不了表情。如果想把所有页面的内容都获取下来不难,拓展一下即可。

# -*- coding:utf-8 -*-

import urllib

import urllib2

import re

#处理页面标签类

class Tool:

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

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

#删除超链接标签

removeAddr = re.compile('|')

#把换行的标签换为\n

replaceLine = re.compile('

|

|

|')

#将表格制表

替换为\t

replaceTD= re.compile('

')

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

replacePara = re.compile('

')

#将换行符或双换行符替换为\n

replaceBR = re.compile('
|
')

#将其余标签剔除

removeExtraTag = re.compile('<.>')

def replace(self,x):

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

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

x = re.sub(self.replaceLine,"\n",x)

x = re.sub(self.replaceTD,"\t",x)

x = re.sub(self.replacePara,"\n ",x)

x = re.sub(self.replaceBR,"\n",x)

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

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

return x.strip()

#百度贴吧爬虫类

class BDTB:

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

def __init__(self,baseUrl,seeLZ):

self.baseURL = baseUrl

self.seeLZ = '?see_lz='+str(seeLZ)

self.tool = Tool()

self.file = None

self.defaultTitle = u"百度贴吧"

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

def getPage(self,pageNum):

try:

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

request = urllib2.Request(url)

response = urllib2.urlopen(request)

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

#print content

return content

except urllib2.URLError, e:

if hasattr(e,"reason"):

print u"连接百度贴吧失败,错误原因",e.reason

return None

def getTitle(self):

page = self.getPage(1)

pattern = re.compile('

(.*?)',re.S)

#pattern = re.compile('

(.*?)',re.S)

#_compile(pattern, flags).search(string)报错就修改,加str

#result = re.search(pattern,str(page))

#findall得到的result是list结构的

result = re.findall(pattern,page)

if result:

#print result.group(1) #测试输出

#return result.group(1).strip()

#print result.encode('utf-8')

"""

因为result是list,只有一维的

for i in range(len(result)):

for j in range(len(result[i])):

print result[i][j].encode('utf-8')

"""

for i in range(len(result)):

print '标题:'+ result[i].encode('utf-8') + '\n'

self.file = open(result[i]+ ".txt","w+")

self.file.writelines(result[i].encode('utf-8') + '\n')

self.file.close()

#print result

return result[0]

else:

return None

# 获取帖子一共有多少页

def getPageNum(self):

page = self.getPage(1)

pattern = re.compile('

(.*?)',re.S)

#result = re.search(pattern,page)

result = re.findall(pattern,page)

if result:

#print result.group(1) #测试输出

#return result.group(1).strip()

#for i in range(len(result)):

# print result[i].encode('utf-8')

#print result

return result[0].encode('utf-8')

else:

return None

#获取每一层楼的内容,传入页面内容

def getContent(self):

page = self.getPage(1)

#pattern = re.compile('

(.*?)

',re.S)

#pattern = re.compile('

(.*?)',re.S)

#pattern = re.compile('

(.*?)

',re.S)

pattern = re.compile('

for i in range(len(items)):

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

self.file.write(str(floor)+ '楼---------------------------------------\n')

floor += 1

#print self.tool.replace(items[i].encode('utf-8'))

self.file.write(self.tool.replace(items[i].encode('utf-8')) + '\n\n')

print '正在写入第'+str(floor-1)+'楼...'

self.file.close()

#baseURL = 'http://tieba.baidu.com/p/3138733512'

#baseURL = 'http://tieba.baidu.com/p/4399969515'

#baseURL = 'http://tieba.baidu.com/p/4400019865'

baseURL = 'http://tieba.baidu.com/p/4075653034'

#下面参数0表示看所有信息,1表示只看楼主信息

bdtb = BDTB(baseURL,0)

#bdtb.getPage(1)

#print bdtb.getTitle()

print '该贴吧总共有'+ str(bdtb.getPageNum()) + '页'

bdtb.getContent()

python爬贴吧回复内容_Python爬虫_获取贴吧内容相关推荐

  1. python爬取学校题库_Python爬虫实战-获取某网站题库

    爬取*网站题库 import requests import re import time import html headers = { 'User-Agent':'Mozilla/5.0 (Win ...

  2. python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频

    之前写过一篇类似的文章:python爬取公众号,用最简单的方式爬虫 还有同学一直在问,可能中间有一些小细节不明确,这次彻底明确一下细节. 本篇添加一个批量下载公众号内视频的功能,可以实现完全复制一个公 ...

  3. python爬取网页数据软件_python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  4. python爬去百度百科词条_Python爬虫入门学习实践——爬取小说

    本学期开始接触python,python是一种面向对象的.解释型的.通用的.开源的脚本编程语言,我觉得python最大的优点就是简单易用,学习起来比较上手,对代码格式的要求没有那么严格,这种风格使得我 ...

  5. python爬取公交车站数据_Python爬虫实例_城市公交网络站点数据的爬取方法

    爬取的站点:http://beijing.8684.cn/ (1)环境配置,直接上代码: # -*- coding: utf-8 -*- import requests ##导入requests fr ...

  6. python爬取历史天气查询_Python爬虫实战-爬取历史天气数据

    最近项目需要对合肥市历史天气数据进行爬取,分析了几个天气数据网站,最终选择天气后报网站. 将实现过程遇到的问题以及下来,供以后参考. 步骤分析 这里我使用的是Python中的requests库Beau ...

  7. python爬取网页数据流程_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  8. python爬取数据的原理_Python爬虫原理

    前言 简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前: 一.爬虫是什 ...

  9. python爬取虎扑评论_python爬虫系列Selenium定向爬取虎扑篮球图片详解

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  10. python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

最新文章

  1. 参考答案:01 线性方程组
  2. 清华大学计算机系71班张晨,“神仙打架”要来了!网友:又到了凡人围观的时刻...
  3. 第五章 逻辑回归模型在评分卡开发中的应用
  4. Pycharm 输出中文或打印中文乱码现象的解决办法
  5. iphone彻底删除照片如何恢复_手机删除的照片如何恢复?OPPO最新照片恢复
  6. php double 类型 浮点数相减
  7. Codeforces #430 dv.2 842A ,842B
  8. 非参数统计的Python实现—— Kruskal-Wallis 单因素方差分析
  9. LTE技术对PTN的影响
  10. HTTP 405Method not allowed
  11. 互联网早报 | 8月26日 星期三 | 蚂蚁集团递交招股文件;TikTok首次披露用户数据;滴滴开辟首个欧洲市场...
  12. Information Communication Technology,简称ICT
  13. 多屏互动之Windows与Mac下的非自带的远程桌面应用
  14. POJ 1795 DNA Laboratory 已被翻译
  15. sqlserver中,sql语句,按照汉字拼音首字母排序
  16. 新手程序员成长之路的五本必读书籍(附资源下载)
  17. ZUFE 2017院赛 - Problem K: Jelly与狗头人的地下世界 (DP)
  18. Cris 的Python日记(三):循环语句
  19. 自定义iOS的状态栏
  20. 怎样有效的恢复电脑回收站文件丨有效数据有哪些

热门文章

  1. Java开发之消息队列
  2. SolidWorks Simulation热仿真优化设计 提高企业生产效率
  3. 【c语言】两个栈实现一个队列
  4. ESP8266 WIFI模块学习基础入门
  5. 计算机多道程序设计是指什么,多道程序设计是什么意思?
  6. Unity3d--AR/MR 技术
  7. 方兴未艾的语音合成技术与应用
  8. Keil5安装教程(包含C51与MDK共存)WIN10 亲测可用
  9. python 文件合并
  10. [相关工具] Flash CC 破解版下载