zoukankan      html  css  js  c++  java
  • [ichunqiu笔记] python安全应用编程入门

    01 python正则表达式

    02 Python Web编程

    03 Python多线程编程

    04 Python网络编程

    05 Python数据库编程

    -------------------------------------

    01 python正则表达式

    对字符串的匹配和检索,通过re模块提供对正则表达式的支持。

    . 匹配任意换行符以外的字符

    1 #python 3.6
    2 import re
    3 word = 'https://www.ichunqiu.com python_1.1'
    4 key = re.findall('h.',word)
    5 print (key)
    结果是['ht', 'hu', 'ho']

    转义字符

    #python 3.6
    import re
    word = 'https://www.ichunqiu.com python_1.1'
    key = re.findall('.',word)
    print (key)
    ['.', '.', '.']

     [...]字符集。对应的位置可以是字符集中任意字符,可以逐个列出也可以给出范围,如[abc]或[a-c]。第一个字符是^则代表取反,[^abc]代表不是abc的其他字符

     预定义字符集

    d   数字[0-9]   adc  a1c

    D  非数字[^d]   aDc  abc

    s   空白字符   asc   a c

    S  非空白字符       abc 

    w  单词字符[a-z A-Z 0-9] abc

    W  非单词字符      a c

    *   匹配前一个字符0次或无限次

    +  匹配前一个字符1次或无限次

    ?  匹配前一个字符0次或1次

    {m} 匹配前一个字符m次

    {m,n} 匹配前一个字符m-n次

    |   左右表达式任意匹配一个

    (..) 一个分组

     贪婪模式与非贪婪模式

    Python里的数量词默认是贪婪的,总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。

     例如正则表达式ab*如果用于查找abbbc将找到abbbb,如果是非贪婪的ab*?,将找到a。

    查找课程
    http = ...
    title = re.findall(r'title="(.*?)" onclick',http) for i in title: print (i)

    02 python web编程

    关键词:urllib/urllib/requests、爬虫开发

    1 import urllib,urllib2
    2 url = 'http://www.baidu.com'
    3 r = urllib.urlopen(url) //发送请求
    4 print r.read() //接受回显

     urllib.urlretreve(url,fliename = None,reporthook=None,data=None) //下载文件

    urllib2.Requests() //控制请求头

    urllib.urlretrieve('地址“',filename='E:\google.png') //下载图片

    requests

    发送网络请求 requests.get(url) requests.post(url)  requests.head(url)

    为URL传递参数payload={'key1':'value1';'key2','valu2'}  r = requests.get(url,params=payload)  //r.url=xxxx/get?key2=value2

    响应内容 r.text r.content

    定制请求头 headers = {'content-type':'application/json'}

    复杂的POST请求payload={'key1':'value1';'key2','valu2'}  r = requests.post(url,data=payload)  

    状态码 r.status_code

    响应头 r.headers

    Cookie r.cookies

    请求超时 r = requests.get(url,timeout = 0.1)

    网络爬虫

    页码由字符串处理,加入headers头,可以用BP抓出来

    r=request.get(url=url,headers=headers)

     03 python多线程

    进程是程序的一次执行,每个进程都有自己的地址空间、内存、数据栈及其他记录其运行轨迹的辅助数据。

    所有的线程运行在同一个进程当中,共享相同的运行环境。线程有开始顺序执行和结束三个部分。

    start_new_thread(function,args kwargs=None)

     1 import thread
     2 import time
     3 def fun1():
     4     print 'Hello world!%s'%time.ctime()
     5 def main():
     6     thread.start_new_thread(fun1,())
     7     thread.start_new_thread(fun1,())
     8     time.sleep(2)
     9 if __name__ == '__main__':
    10     main()
    //一个简单的例子
     1 //探测C段存活主机
     2 #coding = utf-8
     3 #ping
     4 import thread
     5 import time
     6 from subprocess import Popen,PIPE
     7 
     8 def ping_check(ip):
     9     check = Popen(['ping.exe',ip],stdin=PIPE,stdout=PIPE)
    10     data = check.stdout.read()
    11     if 'TTL' in data:
    12         print '[OK] %s'%ip
    13 def main():
    14     for i in range(1,255):
    15         ip = '111.47.226.'+str(i)
    16         thread.start_new_thread(ping_check,(ip,))
    17         time.sleep(0.1)
    18 if __name__ == '__main__':
    19     main()

     threading模块

     1 import threading
     2 import time
     3 
     4 def fun1(key):
     5     print 'hello %s:%s'%(key,time.ctime())
     6 def main():
     7     threads=[]
     8     keys=['danny','nico','nick','pipe']
     9     threads_count = len(keys) //定义线程数
    10     for i in range(threads_count):
    11         t = threading.Thread(target = fun1,args=(keys[i],))
    12         threads.append(t)
    13     for i in range(threads_count):
    14         threads[i].start()
    15     for i in range(threads_count):
    16         threads[i].join()
    17 if __name__ == '__main__':
    18     main()

     生产者-消费者问题和Queue模块

     Queue模块 qsize() empty()  full() put() get()

    04 Python网络编程

     05 Python数据库编程

  • 相关阅读:
    BZOJ3413: 匹配
    BZOJ5084: hashit
    BZOJ2281: [Sdoi2011]黑白棋
    BZOJ4808: 马
    BZOJ3208: 花神的秒题计划Ⅰ
    BZOJ3714: [PA2014]Kuglarz
    BZOJ2102: [Usaco2010 Dec]The Trough Game
    JZOJ6676. 【2020.06.01省选模拟】查拉图斯特拉如是说 (第二类斯特林数+多项式多点求值)
    LOJ #3217. 「PA 2019」Desant(状压dp)
    JZOJ 5154.【NOI2017模拟6.20】树形图求和 (矩阵树定理)
  • 原文地址:https://www.cnblogs.com/rookieDanny/p/10486868.html
Copyright © 2011-2022 走看看