idf实验室--简单编程字符统计,有需要的朋友可以参考下。

第一眼看这道题很简单,不就是字符统计么,可是题目要求2s内回答,而且每次打开的页面需要统计的字符串内容都会变,这就蛋疼了,于是乎上网学习下如何提交post表单,然后用python写个程序自动提交就ok了 ( 题目地址 )

代码如下:

# -*- coding: utf-8 -*- import urllib2
import urllib
import cookielib
import string
import re#需要提交post的url
TARGET_URL = "http://ctf.idf.cn/game/pro/37/"# 设置一个cookie处理器
req = urllib2.Request(TARGET_URL)
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res = opener.open(req)# 通过正则匹配抓到需要统计的字符串
content = res.read()
check_text = re.findall(r'<hr />(.*)<hr />',content,re.S)[0]# 简单的统计
char_count = [0,0,0,0,0]
for txt in check_text:if txt == 'w':char_count[0] += 1elif txt == 'o':char_count[1] += 1elif txt == 'l':char_count[2] += 1elif txt == 'd':char_count[3] += 1elif txt == 'y':char_count[4] += 1#将数字转换成字符串
result = ""
for nIndex in char_count:result += str(nIndex)
print "Result = ", result# 接下来就是提交了
value = {'anwser': result}
data = urllib.urlencode(value)
request = urllib2.Request(TARGET_URL,data)
response = opener.open(request)
html = response.read()
print html

需要注意的地方:你需要保存下来第一次正则匹配时打开页面cookie,构造一个opener,在第二次提交时使用之前的cookie即可。。。否则会提示超时

下面是一个大牛给我的代码,用到了第三方库mechanize:

# coding=utf-8import re
import urllib2
import mechanizeTARGET_URL = "http://ctf.idf.cn/game/pro/37/"
USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 QQBrowser/3.5.3420.400"# Get target text use regular expression.
def get_text(content):return re.findall(r'<hr />(.*)<hr />', content,re.S)[0]def submit():char_count = [0, 0, 0, 0, 0]br_controller = mechanize.Browser()br_controller.set_handle_equiv(True)br_controller.set_handle_redirect(True)br_controller.set_handle_referer(True)br_controller.set_handle_robots(False)br_controller.addheaders = [("User-Agent", USER_AGENT)]br_controller.open(TARGET_URL)# Get web page cotentpage_content = br_controller.response().read()# Get target textcheck_text = get_text(page_content)# Calculatefor txt in check_text:if txt == 'w':char_count[0] += 1elif txt == 'o':char_count[1] += 1elif txt == 'l':char_count[2] += 1elif txt == 'd':char_count[3] += 1elif txt == 'y':char_count[4] += 1# Change value in char_count to string.result = ""for nIndex in char_count:result += str(nIndex)print "Result = ", result# Post form.br_controller.select_form(nr=0)br_controller.form['anwser'] = resultbr_controller.submit()print br_controller.response().read()if __name__ == '__main__':submit()

idf实验室--简单编程字符统计相关推荐

  1. c语言行计数程序,C语言非常简单的字符统计程序50行

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 该程序用于实现linux系统中wc命令的最简单模式 wc 命令用于统计文件中字符信息. [xx@localhost 1.5]$ wc 01.c 02.c ...

  2. 50行以上c语言程序代码,C语言非常简单的字符统计程序50行

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 该程序用于实现linux系统中wc命令的最简单模式 wc 命令用于统计文件中字符信息. [xx@localhost 1.5]$ wc 01.c 02.c ...

  3. IDF 实验室 初探乾坤

    简单编程-字符统计 还可以模拟网页访问,有空试一下. ----------------------------------- 速度要快,用AutoHotKey,语法不太适应 ^d:: StringCa ...

  4. c语言中计算一个字母的序数,C语言编程 输入一串字符统计英文字母的个数

    C语言编程:输入一行字符,至少50个,统计其中英文字母,数字,其他字母个数 楼上那个不能统计空格个数,我这个可以#include#includeintmain(){intcnt_c=0,cnt_n=0 ...

  5. 编程简单的计算机,计算机简单编程示例.doc

    <计算机简单编程示例.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<计算机简单编程示例.doc>文档请在天天文库搜索. 1.1从键盘输入三个数 ...

  6. c语言 简单编程题,c语言简单编程练习题.doc

    c语言简单编程练习题 精品文档 2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1 c语言简单编程练习题 然后输出相应的字符. #include #inc ...

  7. ubuntu 运行c++_06_Linux下VSCode简单编程(远程开发WSL_Ubuntu_18.04) | C语言入门

    06_Linux下VSCode简单编程(远程开发WSL_Ubuntu_18.04) 本系列主题 Linux下C语言彩色控制台编程实践_基于gcc,gdb,VSCode,git和WSL_Ubuntu_1 ...

  8. 李洋疯狂C语言之编程实现统计某年某月份的天数

    今天的题目:编程实现统计某年某月的天数 例如: 输入:2017.7 输出:31天 先附上我自己想的方法,由于几个功能放一起太繁琐,于是我想把他们分为三个函数,分别来实现这个功能: #include & ...

  9. 今天用Map集合写了一个字符串字符统计的程序,看集合看的头痛,就看了一下GUI,于是就随便记点。

    一.使用Map集合写的字符串中字符统计功能函数. package Map;import java.util.HashMap; import java.util.Iterator; import jav ...

最新文章

  1. 阿里、京东、美团、滴滴的 Dubbo / JVM / Spring 面试题及答案(2)
  2. 卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系 转
  3. 关于python语言的浮点数类型_Python 浮点数数据类型详解(float)[学习 Python 必备基础知识][看此一篇就够了]...
  4. Oracle原理:表分区
  5. C#中字符串的内存分配与驻留池
  6. 职称考试取消英语和计算机,强烈建议取消所谓的英语职称和计算机考试
  7. HTML+CSS+JS实现 贪吃蛇游戏源码
  8. 在网络虚拟化之前部署NFV将使运营商网络面临风险
  9. 照片上的人出来了!云从3D人体重建登顶三项榜单,一张照片就能生成3D形象
  10. mysql gtid 主键冲突_MySQL Last_SQL_Errno: 1062----经典错误,主键冲突
  11. STC学习:光照报警器
  12. 永中office属于职称计算机吗,职称计算机考核永中OFFICE辅导之电子表格.doc
  13. 论文查重前应删掉哪些内容?
  14. java 调用关机命令_java调用关机命令
  15. 青果教务系统API(Java版)
  16. 车厢调度(信息学奥赛一本通 - T1357)
  17. WPF 开机一键启动程序V1.0【原创】
  18. free, iostat, Linux, top, uptime, vmstat
  19. javascript 汉字生成拼音
  20. 让微信二维码扫描你的APK

热门文章

  1. 淮安中专学计算机哪个学校好,2021淮安初中十强排名 哪些初中比较好
  2. java换成中文_如果我们的编程替换成中文会变成怎样?
  3. 简述java规范要注意哪些问题_JAVA学习:JAVA基础面试题(经典)
  4. inputdstream mysql_【sparkStreaming】将DStream保存在MySQL
  5. 【渝粤教育】国家开放大学2019年春季 1171科学与技术 参考试题
  6. 【渝粤教育】国家开放大学2018年秋季 2726T畜禽生产概论 参考试题
  7. 【渝粤教育】国家开放大学2018年秋季 2604T城市轨道交通行车组织 参考试题
  8. 【渝粤教育】国家开放大学2018年秋季 0734-22T出纳实务 参考试题
  9. 【渝粤题库】国家开放大学2021春3979会计学概论题目
  10. 【渝粤题库】国家开放大学2021春2617生产与运作管理题目