1. 程式人生 > >秋名山老司機 (Bugku) re庫和request庫

秋名山老司機 (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)

重新整理幾次出現了

可以用指令碼跑一下……

(畢竟人跑不過機器還是可以的嘛