在基于Python爬虫实战二之爬取百度贴吧帖子的项目–崔庆才(http://cuiqingcai.com/993.html),该项目最终爬取一个贴子的所有楼层或者只看楼主。
想到自己可以爬取一个用户的所有帖子,只需修改写入文件的方式,和正则表达式,以及一些微小改动就可以。
爬取的用户为http://tieba.baidu.com/home/main?un=%E6%B3%95%E5%9F%8E%E5%A0%A1%E9%A2%A4%E6%8A%96&ie=utf-8&fr=pb
具体思路为,爬取用户主页的信息,从中提取去每一帖子的ID,放入list中,再根据baseurl加上一些个人需求(如是否只看楼主)生成实际可爬取的url,,下面就可以按照上面的教程一样,稍作修改,爬取的信息都写入一个文件中。
问题:
1.百度贴吧的个人主页是动态加载,无法根据用户的url爬取所有的帖子,而只是爬取一部分。
2.爬取的帖子是按照帖子发布的更新时间写入的。
如果要按照时间先后写入文件,那个可以在正则表达式中,匹配好时间,在对时间进行排序,依次写入内容:或者将urllist反向读取,依次写入内容。
最终结果:
http://download.csdn.net/download/sinat_36802840/9715688
# -*- coding:utf-8 -*-
import re
import urllib2
#处理页面标签类
class Tool:
#去除img标签,7位长空格
removeImg = re.compile('<img.*?>| {7}|')
#删除超链接标签
removeAddr = re.compile('<a.*?>|</a>')
#把换行的标签换为\n
replaceLine = re.compile('<tr>|<div>|</div>|</p>')
#将表格制表<td>替换为\t
replaceTD= re.compile('<td>')
#把段落开头换为\n加空两格
replacePara = re.compile('<p.*?>')
#将换行符或双换行符替换为\n
replaceBR = re.compile('<br><br>|<br>')
#将其余标签剔除
removeExtraTag = re.compile('<.*?>')
def replace(self,x):
x = re.sub(self.removeImg,"&#