用BeatifulSoup爬取百度贴吧(主楼文字)

 最近学习大数据分析,发现很多库都是python的,于是学学python来抓一些数据进而分析。贴吧算是数据来源之一。

from bs4 import BeautifulSoup #引入BeatifulSoup库
import requests #引入requests库,用来进行http请求和响应获取


f = open("application.txt",'w+') #打开准备写入抓取的信息的txt文件,w+是追加写入模式


url = 'http://tieba.baidu.com/p/******* #要爬取的贴吧首页地址


r = requests.get(url) #用requests的get方法向url地址网页提出请求,发回信息放入r
r.encoding = 'utf-8' #显示要求responds用utf-8编码,同样是防止中文乱码
r = r.text.encode('utf-8') #获取返回信息的文本,同样用utf-8编码
soup = BeautifulSoup(r, 'lxml') #用lxml解释器格式化文本
urls = soup.select('#thread_theme_5 > div.l_thread_info > ul >  li.l_pager.pager_theme_4.pb_list_pager > a') #获取本贴的页面url的列表

 print(urls.__len__()) #获取总共的页面数,贴吧有可能抽风,每次获取的数目都不一样,实在不行可以人工指定了个最大的数


pageNo = urls.__len__()
#pageNo = 10 #人工指定最大页面数
for i in range(1, pageNo, 1):#从第一页到最后一页
    url = 'http://tieba.baidu.com/p/*******?pn='+str(i) #获取每页的url地址
    print(url) #控制台打印页面地址看是否正确
    r = requests.get(url)#获取url对应的页面
    r.encoding = 'utf-8'
    r = r.text.encode('utf-8')#页面信息编码
    soup = BeautifulSoup(r, 'lxml')#用lxml解释器格式化页面信息
    for link in soup.find_all('div', 'p_content'): #用find_all方法查找div名字为p_content 的内容,取不同部分的内容填入不同的div名字,但是有时候提取不到内容,待研究
        context = link.get_text().encode('gb18030')#获取的内容编码,必须是gb18030不然就是中文乱码
        #print f, context
        f.write(context + "\t" + "\n")#插入制表符和换行符并写入txt文件
f.close()#以上是for循环,循环完毕后txt文件关闭。随后在本py文件的同文件下就可以查看txt文件内容了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值