[python]re库(正则表达式)的小练习-抓取北航教务处通知列表

 今天想在北航教务网找找ACM的校内赛如何报名,结果发现校务处网站的搜索就是一个摆设。这就很尴尬了,难不成要我一页一页翻通知?刚好学了学re库,所以写一个简单的小爬虫来爬取北航的通知列表!


 

1.分析

北航教务网站上新闻的url是这个格式。显然通过修改xwid的值就可以访问所有的新闻了。

http://jiaowu.buaa.edu.cn/bhjwc2.0/index/newsView.do?xwid=126

分析一下页面的源码,可以看到发布信息存储在这里

1    <div class="search_con mt20 text_cen font18 blue LH36 font_hei">关于2016-2017学年第一学期全校本科生课表确认的通知 </div>
2 
3               <span class="search_con mt10 text_cen  LH20" >
4                       发布时间:2016-10-08 &nbsp;&nbsp;发布者:王晓飞 &nbsp;&nbsp;所属科室:教学运行服务中心
5               </span>
6    

那思路就很清晰了。遍历xwid,然后用正则表达式过滤内容,存入文件即可.

2.编码与调试

 主要的困难还是对于正则表达式掌握的不熟练

import urllib
import urllib2
import re


class BUAA_jiaowu:
    baseurl= 'http://jiaowu.buaa.edu.cn/bhjwc2.0/index/newsView.do?xwid='
    def get_HTML(self,xwid):
        try:
            url=self.baseurl+str(xwid)
            request = urllib2.Request(url)
            response = urllib2.urlopen(request)
            return response.read()
        except urllib2.URLError,e:
            print e.reason
            return None
    def get_title(self,xwid):
        page=self.get_HTML(xwid)
        P=re.compile('<div class="search_con mt20 text_cen font18 blue LH36 font_hei">(.*?)</div>',re.S)
        filter=re.search(P,page)
        return filter.group(1).strip()
    def get_data(self,xwid):
        page=self.get_HTML(xwid)
        P=re.compile(' <span class="search_con mt10 text_cen  LH20" >(.*?)&nbsp',re.S)
        filter=re.search(P,page)
        return filter.group(1).strip()
        
##################################################        
catch=BUAA_jiaowu()
file=open("result.txt","w")
for xwid in range(0,1269):
    title=catch.get_title(xwid)
    data=catch.get_data(xwid)
    print 'Catching The Title Of No.'+str(xwid)
    if len(title)>1:
        print title
        file.write('xwid='+str(xwid)+'\t'+data+'\t\t'+title+'\n')
    else:
        print 'Nothing Here'
print 'down'
 

 

3.后记

没什么技术含量但是挺实用的小程序。主要目的是练习正则表达式,顺便娱乐一下。

(ps:还抓到了若干条官网上没有列出的通知...Interesting)

posted @ 2016-10-25 21:31  CN_LHC  阅读(634)  评论(0编辑  收藏  举报