百度贴吧小说爬取源码
#_*_ coding:utf-8_*_
import re,urllib2,urllib
class BDTB:
#地址,只看楼主 ,多页,
baseUrl='http://tieba.baidu.com/p/3905339699?see_lz=&pn='
#获取源代码
def getPage(self,pageNum):#该页帖子的代码
try:
url=self.baseUrl+str(pageNum)#获取源代码
request=urllib2.Request(url)
response=urllib2.urlopen(request)
return response.read()
except Exception,e:
print e
#匹配标题
def Title(self,pageNum):
html=self.getPage(pageNum)#调用方方,获取源代码
reg=re.compile(r'title="【非原创】(.*?)"')
items=re.findall(reg,html)#返回的是列表
for item in items:
f = open('liujiayi.txt','w')#打开文件的模式
f.write('标题'+'\t'+item)
f.close()
return items
#匹配正文
def Text(self,pageNum):
html=self.getPage(pageNum)#调用方方,获取源代码
reg=re.compile(r'class="d_post_content j_d_post_content "> (.*?)</div><br>',re.S)
req=re.findall(reg,html)
if pageNum==1:
req=req[1:]#第一段不要
for i in req:#去渣子
removeAddr=re.compile('<a.*?>|</a>')
removeaddr=re.compile('<img.*?>')
removeAdd=re.compile('http.*?.html')
i=re.sub(removeAddr," ",i)
i=re.sub(removeaddr," ",i)
i=re.sub(removeAdd," ",i)
i=i.replace('<br>','')#替换
print i# 完全没有杂质的正文内容
f=open('liujiayi.txt','a')
f.write('\n\n'+i)#换行
f.close()
bdtb=BDTB()#调用
print '爬虫正在启动......'
try:
for i in range(1,15):
print '正在抓取第%s页的小说'%(i)
bdtb.Title(i)
bdtb.Text(i)
except Exception,e:
print e