返回信息流LZ这两天学Python,准备找个东西练练手,之前一直又有到论坛某些版面掘坟的习惯,深受扒版之痛,于是就想到做一个爬论坛版面库存中的优质帖的脚本,于是在花了一下午挣扎着写了一个初稿,于是想贴在这儿做做纪念,说不定还可以顺便给以后学弟学妹们做个参考
一个函数都没写 ,代码结构有点混乱,之后再改改,另外得到的结果基本没有UI,后期还需要处理美化一下,功能也不够丰富,后期一定补上,字符编码还不知道怎么搞定,bug也有不少,大家发现了,可以提出来,下面上图:
代码:
#encoding='GB2312'
import requests
import os
i=1
print '本脚本可以帮助您筛选某个版面历史上人气最旺的部分帖子,并部分保存在本地,请按下面提示操作'+'\n'
board = raw_input('请直接输入您所选择查询的版面的英文完整名称,例如:"Python","StudyShare": ')
PAGE=int(raw_input('请输入您想查询的页数,一页代表最新的30篇帖子,为了爱护论坛的服务器,强烈建议您不要经常超过 10页(300篇啊): '))
REPLY=int(raw_input('请输入希望筛选回复数超过多少的帖子,为了爱护论坛的服务器,强烈建议您不要低于20: '))
ROW=30
bourl = "http://bbs.byr.cn/board/" + board +"?p="
filepath= 'bbs.byr.cn/article_ranklist/' + board +'/'
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, compress',
'Accept-Language': 'en-us;q=0.5,en;q=0.3',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36' }
if os.path.exists(filepath):
pass
else:
os.makedirs(filepath)
if(int(PAGE)>=20):
PAGE=20
if(int(REPLY)<=20):
REPLY=20
while i <= PAGE:
bbourl = bourl + str(i)
print bbourl
print '--------------------------'
bbocont =requests.get(bbourl,headers=headers).content
ptrh = bbocont.find('<td class="title_8')
ptrt = bbocont.find(r'</td></tr>',ptrh)
articleurl = ['']*ROW
titlelist = ['']*ROW
replylist = ['']*ROW
j=0
while(ptrh!= -1 and ptrt!=-1 and j<=ROW):
ptitle_11htmp = bbocont.find(r'title_11 middle',ptrh)
ptitle_11h = bbocont.find(r'">',ptitle_11htmp)
#print ptitle_11h
ptitle_11t = bbocont.find(r'</td>', ptitle_11h)
#print ptitle_11t
replyamnt = bbocont[ ptitle_11h + len('">') : ptitle_11t ]
#print replyamnt
if(int(replyamnt)>=REPLY):
ptitle_9h = bbocont.find(r'<a href="',ptrh)
#print ptitle_9h
ptitle_9t = bbocont.find(r'">', ptitle_9h)
#print ptitle_9t
articleurl[j] = bbocont[ ptitle_9h + len('<a href="') : ptitle_9t ]
#print arturl
ptitlet = bbocont.find(r'</a>', ptitle_9t)
titlelist[j]= bbocont[ ptitle_9t + len('">') : ptitlet ]
replylist[j]=replyamnt
artipages = round((int(replylist[j])+1+5)/10)
artipaurltmp='http://bbs.byr.cn'+articleurl[j]+'?p='
n=1
while(n<=artipages):
artipaurl= artipaurltmp +str(n)
articont = requests.get(artipaurl,headers=headers).content
open(filepath+replylist[j]+'_'+titlelist[j]+'.html','a').write(artipaurl+'<br><br>')
print 'Downloading page: '+artipaurl
pcwh = articont.find(r'<div class="a-content-wrap">')
pcwt = articont.find(r'<font class=',pcwh)
NANU=10
k=0
namecont = articont[pcwh + len('<div class="a-content-wrap">') : pcwt]
while(pcwh!=-1 and pcwt!=-1 and namecont!=-1 and k<NANU):
open(filepath+replylist[j]+ '_' + titlelist[j] + '.html','a').write(namecont+'<br><br>')
pcwh = articont.find(r'<div class="a-content-wrap">',pcwt)
pcwt = articont.find(r'<font',pcwh)
namecont = articont[pcwh + len('<div class="a-content-wrap">') : pcwt]
k +=1
n +=1
ptrh = bbocont.find('<td class="title_8',ptrt)
ptrt = bbocont.find(r'</td></tr>',ptrh)
j +=1
i +=1
print 'Completed!'
这是一条镜像帖。来源:北邮人论坛 / python / #2139同步于 2014/7/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
抓取论坛版面历史最火帖
heamon7
2014/7/28镜像同步53 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
还是小白,共同进步[ema4]
【 在 wangxiaobupt (XJ|学习考研|热点公告屯田日久,当建奇功) 的大作中提到: 】
: 感谢分享
通过『我邮2.0』发布
可以再做个抓某个版的精华帖 把所有加蓝钻的 黄钻的 金钻的 抓出来,保存到本地。
从 技术版 、学习交流、 考研版 抓来的精华帖 能得到很多有用的消息哦。
【 在 heamon7 的大作中提到: 】
: 还是小白,共同进步
:
: 通过『我邮2.0』发布
【 在 wangxiaobupt 的大作中提到: 】
: 可以再做个抓某个版的精华帖 把所有加蓝钻的 黄钻的 金钻的 抓出来,保存到本地。
: 从 技术版 、学习交流、 考研版 抓来的精华帖 能得到很多有用的消息哦。
:
恩恩,想法很好,试试!
【 在 wangxiaobupt 的大作中提到: 】
: 可以再做个抓某个版的精华帖 把所有加蓝钻的 黄钻的 金钻的 抓出来,保存到本地。
: 从 技术版 、学习交流、 考研版 抓来的精华帖 能得到很多有用的消息哦。
:
哇塞,才发现,蓝钻了,谢了哦![ema25]
负载太高是什么意思啊?你的机器还是服务器?
被修改。。。
【 在 Chon (葱先森) 的大作中提到: 】
: 我曾经试过把每天的十大帖及其回复都定时抓取下来,并且保存各个历史版本,这样就不用担心帖子被修改之后看不到内容了。。。
: 结果负载太高,只好停止抓取。
通过『我邮2.0』发布
我的服务器,占用大量带宽和磁盘资源。。。
【 在 heamon7 的大作中提到: 】
: 负载太高是什么意思啊?你的机器还是服务器?
: 被修改。。。
:
: ...................
酒楼?楼主是昨天十大问python问题的孩纸吧?顺便问下,楼主大几啊?
【 在 heamon7 (天堂的呼唤) 的大作中提到: 】
: LZ这两天学Python,准备找个东西练练手,之前一直又有到论坛某些版面掘坟的习惯,深受扒版之痛,于是就想到做一个爬论坛版面库存中的优质帖的脚本,于是在花了一下午挣扎着写了一个初稿,于是想贴在这儿做做纪念,说不定还可以顺便给以后学弟学妹们做个参考
: 一个函数都没写 ,代码结构有点混乱,之后再改改,另外得到的结果基本没有UI,后期还需要处理美化一下,功能也不够丰富,后期一定补上,字符编码还不知道怎么搞定,bug也有不少,大家发现了,可以提出来,下面上图:
: [upload=1][/upload]
: ...................
通过『我邮2.0』发布