zoukankan      html  css  js  c++  java
  • 利用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])
  • 相关阅读:
    ES6 解构
    flutter
    selenium
    selenium
    python
    selenium
    selenium
    selenium
    selenium
    selenium- SMTP发送邮件
  • 原文地址:https://www.cnblogs.com/changme/p/4087347.html
Copyright © 2011-2022 走看看