这里以上海工会管理职业学院为例子,目标是获取以下内容。

通过观察网页编码,可以发现以下结构:

标题:

发贴人:

内容:

今天广播员是谁呐歌单和我好像呐求勾搭【另外,别让那个主播Jason出现了,难受】

接下来就是通过urllib2+re(正则表达式)来进行网页处理。

说明

1.在处理网页的时候,如果贴子是置顶的话,有时候会缺失内容项,所以添加了处理置顶贴的函数。

2.网页会有重复贴子的情况,增加了去重功能

如果如下,可以看到大部分的都是些无用的东西;没有太

#__author__='ZHENGT'

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

#爬取百度贴吧的内容

#参考资料:

#http://www.imekaku.com/2015/08/31/python-work-tieba2/

#http://blog.csdn.net/u010412719/article/details/50199047

#http://python.jobbole.com/81359/

#备注:百度贴吧不同页下载下来的数据会有很多重复项,需要进行去重处理

import urllib2

import re

import os

#上海工会管理职业学院

GH_url='http://tieba.baidu.com/f?ie=utf-8&kw=' \

'%E4%B8%8A%E6%B5%B7%E5%B7%A5%E4%BC%9A%E7%' \

'AE%A1%E7%90%86%E8%81%8C%E4%B8%9A%E5%AD%A6%E9%99%A2&pn='

#上海商学院

SXY_url='http://tieba.baidu.com/f?kw=' \

'%E4%B8%8A%E6%B5%B7%E5%95%86%E5%AD%A6%E9%99%A2&ie=utf-8&pn='

#上海应用技术大学

YJD_url='http://tieba.baidu.com/f?kw=' \

'%E4%B8%8A%E6%B5%B7%E5%BA%94%E7%94%A8%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2&ie=utf-8&pn=1'

f1="YJD.txt"

ID_list={} #用于记录贴子ID,去重

#定义百度函数

def Baidu_Tieba(url,i_page):

try:

print '正在下载'+str(i_page)+'页..........' #获取抓取网页

html_Tieba=urllib2.urlopen(url+str(i_page)).read()

print type(html_Tieba) #显示类别,一般为str

return html_Tieba #返回值

except Exception,e: #Error

print e

def PraserHTML(WebData,i_page): #处理网页信息,WebData->>String

TopNum=0 #初始化

Titles=GetTitle(WebData) #Type-->>List

Posters=GetPoster(WebData) #Type-->>List

Contents=GetContent(WebData) #Type-->>List

IconTop=GetTop(WebData) #Type-->List

TopNum=len(IconTop) #置顶贴子数

if TopNum>0: #记录页面置页贴子

for i in range(0,len(Titles)): #根据标题列表循环

title=ReplaceTitle(Titles[i])

IDs = title.split(' ') #按空格分割,获取ID号码

ID_list[IDs[0]] = IDs[1] #添加字典

poster=ReplacePoster(Posters[i])

if i<=TopNum: #处理置顶贴

content = "IconTop"

else:

content=ReplaceContent(Contents[i-TopNum])

Write_To_File(title,poster,content)

else:

for i in range(0,len(Titles)): #根据标题列表循环

title=ReplaceTitle(Titles[i])

IDs=title.split(' ') #按空格分割,获取ID号码

if not ID_list.has_key(IDs[0]):

ID_list[IDs[0]]=IDs[1] #添加字典

poster=ReplacePoster(Posters[i])

content=ReplaceContent(Contents[i])

Write_To_File(title,poster,content)

def ReplaceTitle(item): #替换Title不需要字符

removeHead=re.compile('

else:

return "NA"

def Write_To_File(title,poster,content): #数据写入txt文件

f=open(f1,'a')

f.write(title+"--->>>"+poster+"--->>>"+content) #主题,发贴人,内容

f.write("\n")

f.close()

def GetTitle(Data): #获取当前页主题

pattern=re.compile(r'

data=re.findall(pattern,Data)

return data

def GetTop(Data): #获取当前页内容,获取置顶贴子

pattern=re.compile(r'')

data=re.findall(pattern,Data)

return data

if __name__=='__main__': #

if os.path.exists(f1): os.remove(f1) #初始化文件

for i in range(1,11): #指定需要循环的页数

html_data=Baidu_Tieba(YJD_url,i)

PraserHTML(html_data,i)

# Write_To_File("Page----",str(i),"-----Done")

print "Done-----------------"

exit(0)

python写的一个贴吧爬虫_Python-简单百度贴吧爬虫相关推荐

  1. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  2. 我用Python写了一个成语接龙的游戏,并把它部署到了手机上

    我用Python写了一个成语接龙的游戏,并把它部署到了手机上 成语大全数据 6月高考的前一天,我发布的一篇文章,决战高考,帮你秒变成语之王,当时只是把 http://chengyu.haoshiwen ...

  3. 为了帮女神完成钢琴家梦想,我用Python写了一个自动弹钢琴脚本,轻松弹奏出各种钢琴曲!

    事情是这样的,女神马上要毕业了,前两天跟我彻夜长谈,还说自己一直有个钢琴家的梦想. 这不为了帮女神圆梦,在我经过一番苦思冥想之后,终于用Python写了一个自动弹钢琴脚本,不会钢琴的都能成为钢琴家. ...

  4. 使用python写的一个小系统

    最近在学习python写了一个学生管理系统,参考使用python创建学生管理系统_宇同学的博客-CSDN博客_python学生管理系统(感谢大牛的分享),不过小编对部分代码可读性进行了调整并新增了部分 ...

  5. 用 python 写了一个日记本

    写一个随机任务抽取器 一.前言 二.逻辑构思 2.1 目标实现 2.2 搭建开发环境 2.3 Pyinstaller 打包 三.效果展示 3.1 初始化和添加日记 3.2 查看日记 3.3 删除日记 ...

  6. python卖水果_小姨开水果店的,所以今天用Python写了一个水果店小系统!

    原标题:小姨开水果店的,所以今天用Python写了一个水果店小系统! 前言 今天晚上才刚下班,小姨就提了我最爱吃的榴莲过来,说不吃就坏了. 我一眼就看破了她的用意,哈哈哈 我这个小姨也是一起长大的,她 ...

  7. 用python写的一个简易的云音乐播放器

    本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上找到. #co ...

  8. 用python写了一个简易的记账软件,后期有可能更新!

    记账程序由来 曾经在iOS14的快截指令中写了一个快捷指令用来记账,但是由于快捷指令的限制,只能把数据记录到备忘录或者numbers,数据的迁移性很差.所以最后干脆用python写了一个程序 程序介绍 ...

  9. 用Python写了一个电子考勤系统!

    今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...

  10. 耗时半年,用 Python 写了一个电子考勤系统

    今天给大家分享一个比较有意思的 Python 应用,用 Python 写了一个电子考勤系统,源码获取在下方文章中给出,记得点赞收藏哦- 文章目录 电子考勤完整代码 项目简介 答题要求 附加功能 导入模 ...

最新文章

  1. 分页控件 WebPager [ZT]
  2. Java多线程编程实战指南
  3. ubuntu安装npm(npm install)时报错:run `npm audit fix` to fix them, or `npm audit` for details
  4. Conda环境搭建记录
  5. docker ubuntu 文件同步_Docker 的数据管理--Docker从入门到精通摘记
  6. jquery post php返回html,jquery ajax post 提交数据,返回的是当前网页的html?
  7. 华为不做黑寡妇,开源编译器,与友商共建安卓性能
  8. python缩进注意事项_python注意事项
  9. c++程序设计中的多态与虚函数知识点
  10. 特征筛选9——根据重要性SelectFromModel筛选特征(有监督筛选)
  11. springcloud 高可用的服务注册中心
  12. 大数据hadoop,spark,flink等经典电子书PDF下载
  13. 基于GEE使用Landsat 8和Landsat 5影像计算RSEI
  14. 【UV打印机】RYPC打印软件教程(一)-软件简介
  15. 主成分分析法(三):计算步骤
  16. 无根树(无环连通无向图)的Prufer编码
  17. mino文件服务器,mimo技术有什么用_mino技术原理解析
  18. 服务器重启后samba启动不了,提示stop: Unknown instance: smbd start/running, process 76585...
  19. 【小程序模板】功能模块+红色招聘信息资讯小程序网页模板+行业职位招聘小程序+招聘信息网页下载
  20. html5 canvas 显示文字,如何使用HTML5canvas绘制文字

热门文章

  1. Oracle与mongodb的区别
  2. Java黑皮书课后题第10章:*10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子
  3. C语言学习之企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提成10%;
  4. 【Django】基于Django架构网站代码的目录结构---转载
  5. VS2008 Tips #008 如何创建ASP.NET Web 用户控件并包含在Web 页面中
  6. 网站如何从http升级成https
  7. UG集成显卡 显示成烂面
  8. jQuery的三种bind/One/Live事件绑定使用方法
  9. ArcGIS Server 简介
  10. Gridview行随鼠标变色