首页 文章 精选 留言 我的

精选列表

搜索[python],共10000篇文章
优秀的个人博客,低调大师

python实现post请求

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/81568411 pyload={"token": "2280d841c47074107bb903169cd78d4d0a1345970ec6380d0909efc7e77a25cb","sign":"700eae16811bd1844e21c31c3ed0f5b0","page":"3","order":"0","limit":"12","map":""} headers={'Host': 'usedcar.auto.sina.com.cn', 'Connection': 'keep-alive', 'Content-Length': '186', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Origin': 'http://usedcar.auto.sina.com.cn', 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.0.1471.813 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Referer': 'http://usedcar.auto.sina.com.cn/buycar/s/%E8%AF%B7%E8%BE%93%E5%85%A5%E5%93%81%E7%89%8C%E6%88%96%E8%BD%A6%E5%9E%8B', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8', } d=requests.post(url,data=payload,headers=headers) print(d) 然后服务器报错,但是一样的数据在filder里面却是对的,这是什么原因呢? 后来通过requests的官方文档发现,有这么一句话: 很多时候你想要发送的数据并非编码为表单形式的。如果你传递一个string而不是一个dict,那么数据会被直接发布出去。 通过抓包软件fillder去看看我在pycharm里面请求和在fillder里面请求的东西来看,最后返回来的数据的形式完全就是不一样了,所以对应正确的格式,我把其转换为string,得出结果和正确一样的, 可以正确返回的表单的值是这样子的: {"token":"2280d841c47074107bb903169cd78d4d0a1345970ec6380d0909efc7e77a25cb","sign":"700eae16811bd1844e21c31c3ed0f5b0","page":"3","order":"0","limit":"12","map":""} 然后我的目的就是把那些参数化为输出为上面的数据那样子。 所以最后形式为以下那样子: payload = '{"token":'+' "2280d841c47074107bb903169cd78d4d0a1345970ec6380d0909efc7e77a25cb"'+',"sign":'+'"700eae16811bd1844e21c31c3ed0f5b0"'+',"page":'+'"3"'+',"order":'+'"0"'+',"limit":'+'"12"'+',"map":'+'""'+'}' 接下来发现又是一个很尴尬的事情,服务器直接报错,504错误,开始还去找这是什么原因,后来在网上看到是这样子说的: wireshark抓包发现: 用reqeusts和curl发送的数据都是一样的,但是,curl有带一个header:"Content-Type": "application/x-www-form-urlencoded" 看来requests也需要加上这个头: headers = {"Content-Type": "application/x-www-form-urlencoded"} 最后我把我内容的headers换成以上headers,结果还真的是成功了。 虽然为什么是那个头,我还真的不知道是什么一个的原因 。后续知道会陆续去更新的。 马上看完文档发现一个问题,就马上来记下来,在新的版本的requests里面,除了对dict格式去编码以外,还可以使用json格式直接去传递,然后它就会被自动编码。这是 2.4.2 版的新加功能: d=requests.post(url,json=data,headers=headers) print d print d.text

优秀的个人博客,低调大师

Python标准库(待续)

相识一场,记得顶我 集合操作 并集 >>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.union(b) {1, 2, 3, 4} >>> a|b {1, 2, 3, 4} 交集 >>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.intersection(b) {2, 3} >>> a&b {2, 3} 子集归属 >>> c = a&b >>> c.issubset(a) True >>> c<=b True >>> c<=a True >>> c>=a False 因为集合是可变的,但是集合本身包含的是不可变对象,所以以下代码会报错。 >>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.add(b) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set' 这时候我们需要使用frozenset类型,用于代表不可变的集合,它会创建一个副本对象加入到集合中。 >>> a.add(frozenset(b)) >>> a {1, 2, 3, frozenset({2, 3, 4})} 堆操作 堆是一种数据结构,它是优先队列的一种,它在查找方面比列表的效率要高得多。 heappush(heap,x) 入堆 heappop(heap) 出堆 heapify(heap) 把可迭代对象转换为堆 heapreplace(heap,x) 将堆中最小元素弹出,同时将x入堆 nlargest(n,iter) 找出可迭代对象中第n大元素 nsmallest(n,iter) 找出可迭代对象中第n小元素 >>> from heapq import * >>> from random import shuffle >>> data = range(10) >>> shuffle(data) >>> heap = [] >>> for n in data: heappush(heap,n) >>> heap [0, 2, 1, 3, 5, 7, 4, 6, 9, 8] >>> heappop(heap) 0 >>> heappop(heap) 1 >>> heappop(heap) 2 >>> heappop(heap) 3 >>> heap [4, 5, 7, 6, 9, 8] ----------------------------------------- >>> heap = [9,7,2,4,5,6,2,3,1] >>> heapify(heap) >>> heap [1, 3, 2, 4, 5, 6, 2, 7, 9] ----------------------------------------- >>> heapreplace(heap,0.5) 1 >>> heap [0.5, 3, 2, 4, 5, 6, 2, 7, 9] 从上述代码运行的结果可以看出,这是一个小根堆的排序算法---位于i位置上的元素总比i/2位置处的元素大,反过来也就是i位置处的元素总比2i和2i+1位置处的元素小。 双端队列 >>> from collections import deque >>> q = deque(range(5)) >>> q.append(5) >>> q.appendleft(6) >>> q deque([6, 0, 1, 2, 3, 4, 5]) >>> q.pop() 5 >>> q.popleft() 6 >>> q deque([0, 1, 2, 3, 4]) >>> q.rotate(2) >>> q deque([3, 4, 0, 1, 2]) >>> q.extend([3,4]) >>> q deque([3, 4, 0, 1, 2, 3, 4]) >>> q.extendleft([2,1]) >>> q deque([1, 2, 3, 4, 0, 1, 2, 3, 4]) 从上述代码可以看出双端队列的好处在于它可以在列表的两端进行操作和旋转列表。 time 可以使用实数表示,也可以使用包含9个整数的元组表示。如果使用元组表示,那这些整数的意义如下: (2018,1,21,10,28,30,2,21,0) 表示2018年1月21日,10时28分30秒,星期3,当天为当年的第21天,(无夏令时) asctime([tuple]) 将时间元组转换为字符串 localtime([secs])将秒数转换为日期元组,以本地时间为准 mktime(tuple)将时间元组转换为本地元组 sleep(secs)休眠 strptime(string[,format])将字符串解析为时间元组 time()当前时间 'Wed Jul 11 10:02:04 2018' random random() 返回0<n<=1之间的随机实数n getrandbits(n) 以长整型形式返回n个随机位 (加密有用) uniform(a,b) 返回随机实数n,其中a<=n<b,(a,b)之间的均匀分布 randrange([start],stop,[step]) 返回range(start,stop,step)中的实数 choice(seq)从序列seq中返回随意元素 shuffle(seq[,random])原地指定序列 seqsample(seq,n) 从序列seq中选择n个随机且独立的元素 re re模块是一个正则表达式的模块 compile(pattern[,flags]) 根据包含正则表达式的字符串创建模式对象 search(pattern, string[,flags])在字符串中寻找模式 match(pattern,string[,flags]) 在字符串的开始处匹配模式 split(pattern,string[,maxsplit=0])根据模式的匹配来分割字符串 findall(pattern,string) 列出字符串中模式的所有匹配项 sub(pat,repl,string[,count=0])将字符串中所有pat的匹配项用repl替换 escape(string) 将字符串中所有特殊正则表达式字符转义 用任意长度的逗号和空格序列来分割字符串 some_text = 'alpha,beta,,,,gamma delta' re.split('[, ]+',some_text) ['alpha', 'beta', 'gamma', 'delta']

优秀的个人博客,低调大师

python的条件结构

一.条件结构的语法结构 完整形态 if 条件判断1: 代码块1 elif 条件判断2: 代码块2 elif 条件判断3: 代码块3 else: 代码块4 #举例 age = 20 if age >= 60: print('老年人') elif age >= 30: print('中年人') elif age >= 20: print('青年人') elif age >= 10: print('少年') else: print('儿童') 简化形态1 if 条件判断1: 代码块1 else: 代码块4 #举例 age = 20 if age >= 18: print('成年人') else: print('未成年人') 简化形态2 if 条件判断1: 代码块1 elif 条件判断3: 代码块3 #举例 age = 20 if age >= 60: print('老年人') elif age >= 30: print('中年人') 简化形态3 if 条件判断1: 代码块1 #举例 age = 20 if age >= 60: print('老年人') 二.条件结构的执行原则 原则1:从上到下,顺序执行。 原则2:条件判断的结果,如果为True,则进入执行代码块;如果为False,则继续向下进行条件判断;如果所有条件判断都为False,则执行else语句。 原则3:在同一个条件结构里,如果一个条件满足,进入执行代码块, 那么其他条件都会无效,不再进行条件判断。 三.条件结构的嵌套 嵌套:就是一层嵌套一层,如同俄罗斯套娃。 #举例:条件执行的嵌套 num=int(input("输入一个数字:")) if num%2==0: if num%3==0: print ("你输入的数字可以整除 2 和 3") else: print ("你输入的数字可以整除 2,但不能整除 3") else: if num%3==0: print ("你输入的数字可以整除 3,但不能整除 2") else: print ("你输入的数字不能整除 2 和 3") 我们可以在一个条件结构的代码块里,继续放入条件结构。 四.pass语句 pass:不做任何事情。一般用作占位符,保证程序结构的完整性,以免报错。 if 条件判断1: pass elif 条件判断2: pass elif 条件判断3: pass else: pass

优秀的个人博客,低调大师

python的循环结构

一.循环结构的语法结构一 while循环:重复到一定条件才结束的循环。(也叫条件循环) while 条件判断: 代码块 #举例 count =0 while count<3: print(“进入循环执行!”) print(count**2) count=count+1 二.循环结构的语法结构二 for循环:遍历序列,重复到一定次数的循环。(也叫计数循环) for 变量名 in 序列: 代码块 #举例 list=["关羽","张飞","赵云","黄忠","马超"] for i in list: print("此乃五虎上将:"+i) 三.循环结构的执行原则 原则1:从上到下,顺序执行 原则2:循环结构执行完毕后,才会接着执行后面的代码。 四.for循环+range()函数 range():数列生成函数。 (跟for循环简直绝配哦!) 用法1:range(num1,num2) 生成数列,从num1开始,直到num2结束。 #举例1 for i in range(1,9): print(i) 用法2:range(num2) 生成数列,从0开始,直到num2结束。 #举例2 for i in range(9): print(i) 用法3:range(num1,num2,num3) 生成数列,从num1开始,按num3增长,直到num2结束。 #举例3 for i in range(1,9,2): print(i) 五.传说中的死循环 死循环:无限次循环执行,永远不会结束! (也叫无限循环) #举例1 while True: print(11111) #举例2 while 1<2: print (111111) 注1:一般来说,我们需要避免死循环的发生!因为进入死循环,循坏外面的代码就都不会执行了。 注2:但有时候,我们会需要无限循环的效果。这个时候,就会故意写成死循环。 六.循环结构的嵌套 嵌套:就是一层嵌套一层,如同俄罗斯套娃。 #举例:打印一个九九乘法表,使用for循环 for i in range(1,10): for j in range(1,i+1): print(str(i)+" * "+str(j)+" = "+str(i*j),end=" ") print() #举例:打印一个九九乘法表,使用while循环 i =1 while i<=9: j = 1 while j <= i: print(str(i) + " * " + str(j) + " = " + str(i * j),end=" ") j=j+1 i=i+1 print() 我们可以在一个循环结构的代码块里,继续放入循环结构。 七.break语句 break:立即终止循环。 #break语句举例,while循环 var = 10 while var > 0: var = var -1 if var == 5: break print ('当期变量值为 :', var) #break语句举例,for循环 for letter in 'google': if letter == 'o': break print ('当前字母为 :', letter) 注:如果循环嵌套,break只能终止本层的循环,不会终止上层的循环。 八.continue语句 continue:跳过这一轮循环,进行下一轮循环。 #continue语句举例,while循环 var = 10 while var > 0: var = var -1 if var == 5: continue print ('当前变量值 :', var) #continue语句举例,for循环 for letter in 'google': if letter == 'o': continue print ('当前字母 :', letter) 九.pass语句 pass:不做任何事情。一般用作占位符,保证程序结构的完整性,以免报错。 #while循环 while 条件判断: pass #for循环 for 变量名 in 序列: pass

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册