[ichunqiu笔记] python安全应用编程入门

01 python正则表达式python

02 Python Web编程web

03 Python多线程编程正则表达式

04 Python网络编程数据库

05 Python数据库编程编程

-------------------------------------json

01 python正则表达式

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

 

. 匹配任意换行符之外的字符网络

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的其余字符app

 预约义字符集

\d   数字[0-9]   a\dc  a1c

\D  非数字[^\d]   a\Dc  abc

\s   空白字符   a\sc   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数据库编程

相关文章
相关标签/搜索