秋名山老司機 (Bugku) re庫和request庫
嘗試寫的第一個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)
所得知識點:
安裝:(用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)
重新整理幾次出現了
可以用指令碼跑一下……
(畢竟人跑不過機器還是可以的嘛