爬虫 提取贴吧楼主发布的内容 beatifulsoup和正则配合

本文介绍了一种使用Python爬取百度贴吧帖子的方法。通过输入帖子的URL,利用urllib和BeautifulSoup库抓取帖子的所有页面内容,并将其保存为本地文本文件。此过程包括获取帖子总页数、提取帖子标题及每页的具体内容。

直接贴源码,过程挺简单,bs4比正则好用多了

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


import urllib,re,os
from bs4 import BeautifulSoup

tiezi = raw_input('请输入帖子地址:')
def geturl(i):
    url =tiezi+'?see_lz=1'+'&pn='+str(i)
    req = urllib.urlopen(url).read().decode('utf-8')
    return req

def getpagenumber(req):
    pat3 = re.compile(r'<span class="red">(\d*)</span>')
    number = pat3.findall(req)
    return number

def gettitle(req):
    pat1 = re.compile(r'<title>(.*?)</title>')
    longtitle =pat1.findall(req)[0].split('_')
    title = '-'.join(longtitle[:-2])
    return title

    
def getcontent(req):
    soup = BeautifulSoup(req)
    contents = soup.findAll("div",{"id":re.compile("post_content.*")})
    return contents
 
tempreq = geturl(1)   
number = getpagenumber(tempreq)[0]
print u"楼主一共发布了"+number+u"页的帖子"
title = gettitle(tempreq)
f = open(title+'.txt','w')
for i in range(int(number)):
    print u"正在读取第"+str(i+1)+"页的内容"
    req = geturl(i+1)
    txt = getcontent(req)
    for eachitem in txt:
        f.write(eachitem.get_text())
        f.write("\n")
f.close()
print u"已经保存到本地"+os.getcwd()




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值