利用urllib爬取pythontip网站上的挑战题目,附全部题目178题(其中有不存在的几题,跳空的序号),网站地址:http://www.pythontip.com/coding/code_oj
代码:
import re,urllib.request
url='http://www.pythontip.com/coding/code_oj_case/'
f=open('questions.txt','w+')
for i in range(1,179):
url0=url+str(i)
req=urllib.request.Request(url0)
try:resp=urllib.request.urlopen(req)
except:continue
data=resp.read()
data = data.decode('utf-8')
s=data.find('<h3>')+len('<h3>')
e=data.find('</h3>')
t=data[s:e].replace('<!-- -->','')
if len(t)>2000:continue
print(t)
ok=f.write(t+'\n')
data=data.replace('</p>','\n')
data=data.replace(' ','')
data=data.replace('"','\"')
data=data.replace('<','<')
data=data.replace('>','>')
data=re.sub('<.*?>','',data)
s=data.find('题目描述:')
e=data.find('提交次数')
t=data[s:e]
print(t)
ok=f.write(t+'\n')
print('='*60)
ok=f.write('='*60+'\n')
f.close()
print('Finished!')
爬取结果:
第 1 题:a + b
题目描述:
给你两个数 a、b,请你计算它们的和,并输出。
例如: a = 3, b = 2
则输出:5
提示:挑战 python 栏目的所有题目,题目中所给变量使用前不用声明,也不用赋值,系统
自动赋值。
如本题,只需一行代码即可: print a + b
系统会自动为 a 和 b 赋值,并检查代码执行结果和标准答案是否相同。示例:
输入:a = 1
b = 2
输出:3
============================================================
第 2 题:列表排序
题目描述:
给你一个列表 L, 对 L 进行升序排序并输出排序后的列表。
例如:L = [8,2,50,3]
则输出:[2,3,8,50]示例:
输入:L = [4, 2, 25, 7777777, 100, 3, 77777777, 77777777, 77777777, 77777777]
输出:[2, 3, 4, 25, 100, 7777777, 77777777, 77777777, 77777777, 77777777]
============================================================
第 3 题:字符串逆序
题目描述:
给你一个字符串 a, 请你输出逆序之后的 a。
例如:a=‘xydz’
则输出:zdyx
============================================================
第 4 题:输出字典 key
题目描述:
给你一字典 a,如 a={1:1,2:2,3:3},输出字典 a 的 key,以','连接,如‘1,2,3'。要求 key 按照
字典序升序排列(注意 key 可能是字符串)。
例如:a={1:1,2:2,3:3}, 则输出:1,2,3
============================================================
第 5 题:输出字符奇数位置的字符串
题目描述:
给你一个字符串 a, 输出 a 中奇数位置字符构成的字符串(位置编号从 1 开始)。
例如:a=‘xyzwd’
则输出:xzd 示例:
输入:a = "0123456789"
输出:02468
============================================================
第 6 题:求解 100 以内的所有素数
题目描述:输出 100 以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后
不能有空格)。
============================================================
第 7 题:求矩形面积
题目描述:
已知矩形长 a,宽 b,输出其面积和周长,面积和周长以一个空格隔开。
例如:a = 3, b = 8
则输出:24 22 示例:
输入:a = 3
b = 8
输出:24 22
============================================================
第 8 题:求中位数
题目描述:
给你一个整数列表 L, 输出 L 的中位数(若结果为小数,则保留一位小数)。
例如: L=[0,1,2,3,4]
则输出:2 示例:
输入:L = [0, 1, 8, 3, 4]
输出:3
============================================================
第 9 题:最大公约数
题目描述:
给你两个正整数 a 和 b, 输出它们的最大公约数。
例如:a = 3, b = 5
则输出:1 示例:
输入:a = 3
b = 5
输出:1
============================================================
第 10 题:最小公倍数
题目描述:
给你两个正整数 a 和 b, 输出它们的最小公倍数。
例如:a = 3, b = 5
则输出:15 示例:
输入:a = 3
b = 5
输出:15
============================================================
第 11 题:结尾 0 的个数
题目描述:
给你一个正整数列表 L, 输出 L 内所有数字的乘积末尾 0 的个数。(提示:不要直接相乘,数字
很多,相乘得到的结果可能会很大)。
例如: L=[2,8,3,50],
则输出:2 示例:
输入:L = [4, 2, 25, 7777777, 100, 3, 77777777, 77777777, 77777777, 77777777]
输出:4
============================================================
第 12 题:结尾非零数的奇偶性
题目描述:
给你一个正整数列表 L, 判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇
数输出 1,偶数则输出 0.。
例如:L=[2,8,3,50]
则输出:0 示例:
输入:L = [2, 8, 3, 50]
输出:0
。。。。。。
省略............
。。。。。。
完整全部内容请自行运行代码完成下载,或者通过以下地址直接下载: