秋名山老司机 (Bugku) re库和request库

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/destiny1507/article/details/82414623

尝试写的第一个python脚本……之前一直只会用工具(不,有的工具也还不会用……)可以说是很神奇了

先贴上代码:

import requests
import re
url='http://120.24.86.145:8002/qiumingshan/'
r=requests.session()
requestpage = r.get(url)
ans=re.findall('<div>(.*?)=?;</div>',requestpage.text)#获取表达式
ans="".join(ans)#列表转为字符串
ans=ans[:-2]#去掉最后的=?
post=eval(ans)#计算表达式的值
data={'value':post}#构造post的data部分
flag=r.post(url,data=data)
print(flag.text)

所得知识点:

1、python的requests库    requests库详细用法

安装:(用pip)在cmd里输入 pip install requests即可;

在这道题中我们用了requests中的session()函数get()函数post()函数、下面一一说明:

session对象可以使我们跨请求保持某些参数,也可以在同一个session实例发出的所有请求之间保持cookies

——创建一个session对象可以拥有以上的作用(但并没有实例化);

 

然后get()函数,用来进行模拟发送,获得相应url站点的信息,可分为有参和无参两种情况:

无参:

如以上代码,括号内是一个url,表示获取这个url内的信息。

有参:

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.get("http://pythontab.com/justTest", params=payload)

(似乎经常看到payload这个词……萌新的我表示懵逼、懵逼、一脸懵逼,后来百度了一下,意思就是关键信息,大概是为了代码可读性更高吧……)

post的情况类似;

 

2、re库

这个似乎不用额外安装了……如果有问题的话启动pip大法hiahiahia

re库的主要用途就是进行字符串匹配(看着就会有很多我记不住的各种函数嘤嘤嘤)wuling这个博客很详细

说到字符串匹配,正则表达式完全是绕不过的啊2333,在re库中,几乎所有的函数参数都有正则表达式,re库中正则表达式有两种表示方式:

①raw string类型

表示为:r'text',例如:r'[1-9]\d{5}',raw string是指不包含转义符的字符串;

如果正则表达式里含有转义字符之类的敏感字符,最好用这种方法。

②string类型

例如:'[1-9]\\d{5}';'\\d{3}-\\d{8}|\\d{4}-\\d{7}'

 

3、用到的python的其他函数

join()函数,用法:例如ex.join(str)

参数说明
ex:分隔符。可以为空(如本题)
str:要连接的元素序列、字符串、元组、字典
上面的语法即:以ex作为分隔符,将str所有的元素合并成一个新的字符串

返回值:返回一个以分隔符ex连接各个元素后生成的字符串

----------------------------------------------------------------------------------------------------我是分割线哇

对于这道题:

根据题目中的提示,要在2s内算出,emmmmm手算显然不可能,数字太大,计算器说不定也会溢出(2333)

刷新几次出现了

可以用脚本跑一下……

(毕竟人跑不过机器还是可以的嘛

展开阅读全文

没有更多推荐了,返回首页