利用Python获取ZOJ所有题目的名字

先贴出代码,行数比较少,仅仅用正则表达式分析出题目Title所在的标签并把题目Title提取出来

 

 1 import urllib.request
 2 import re
 3 import dbm
 4 #定义URL,其中%d用于替换页码
 5 url = 'http://acm.zju.edu.cn/onlinejudge/showProblems.do?contestId=1&pageNumber=%d'
 6 #连接持久化字典,这里用创建的方法'c'来创建写入
 7 db = dbm.open('zoj_list', 'c')
 8 
 9 for index in range(1, 30):
10     this_url = url % (index)#替换URL中代表页码的数字
11     html = urllib.request.urlopen(this_url).read()#read方法读取页面HTML
12     html = html.decode('utf-8')#UTF-8编码,没有这句会提示错误
13     title = re.compile('<font color="blue">.*</font>')#正则之,编译之
14     key = ''
15     cnt = 1
16     for x in title.findall(html):
17         title_parse = re.compile('<[^>]+>')#除去标签的正则
18         get = title_parse.sub('', x)#除去标签
19         if cnt % 2 == 0:
20             value = get
21             db[key] = value
22         else:
23             key = get
24         cnt += 1

这个把key和value通过字典保存到了'zoj_list'这个持久化字典中。
读取这个字典的代码如下:

1 import dbm
2 db = dbm.open('zoj_list', 'r')
3 print(db['1001'])
4 for index in range(1001, 2000):
5     in_ch = str(index)
6     print(db[in_ch])

 

转载于:https://www.cnblogs.com/changme/p/4087347.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值