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

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

标题:

发贴人:

内容:

今天广播员是谁呐歌单和我好像呐求勾搭【另外,别让那个主播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. MongoDB之bson的介绍
  2. 廖雪峰Java1-2Java程序基础-3整数运算
  3. 【转】C++11 并发指南五(std::condition_variable 详解)
  4. 编译 PHP7.0为什么那么慢,CentOS 7编译安装php7.0.7以及可能遇到的问题的解决方案...
  5. pycharm 类型注释_学习Python第一步,变量与数据类型
  6. 宣告推出.NET Core 3.0 Preview 7
  7. Guayadeque成为音乐爱好者的开源播放器的6个原因
  8. 一脸懵逼的算法系列之汉诺塔
  9. 嵌入式开发需要学习哪些东西
  10. Matlab——常用函数的用法总结(部分直接摘自mathwork,持续更新)
  11. 案例:世界500强如何打造汽车后市场智慧门店
  12. JavaMail简易教程
  13. R语言入门(15)_读取文件(read)
  14. RLException: [xx.launch] is neither a launch file in package [x] nor is [x] a launch file name的解决方法
  15. 【我的读书】《薛兆丰经济学讲义》助你变得更理性、悦纳和进取
  16. python俩种方法画日本国旗
  17. Machine Learning in Action(5) SVM算法
  18. 汇编语言王爽课程设计二
  19. vs code文件的打开和运行
  20. 第十周博文作业:项目1 求个人所得税

热门文章

  1. OpenCV C++ 04 - Change Brightness
  2. 安装oel6.3 操作系统
  3. Luogu_2774 方格取数问题
  4. KMP算法的nextval[] 即优化next[]
  5. DWR第六篇之文件下载
  6. 深入了解UIAutomation 的API
  7. Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39
  8. windows剪切板暂存
  9. bashrc, bash_profile etc;
  10. asp.net2.0导出pdf文件完美解决方案(转载)