Requests:为人类设计的HTTP库

简介:

1、官方文档:Requests: HTTP for Humans 。(秒杀urllib、urllib2、httplib。。。)

1.1、请求主要参数说明:requests.request(method, url, **kwargs)

2、官方下载地址:https://pypi.python.org/pypi/requests

3、安装方法:

1
python setup.py  install

4、一个有用的特性:持久保持cookie。(参考这里

5、添加cookie:(可以参阅这篇文章

1
requests.utils.add_dict_to_cookiejar(cj, cookie_dict)

5.1、如果sn.headers['Cookie']有值,那么sn.cookies 不再起作用。

6、用python爬虫抓站的一些技巧总结,注意(3.5 终极绝招)中提到的工具:selenium,pamie,watir。

7、Python的扩展包requests的高级用法,应该是这两个页面的组合翻译:

8、关于默认超时值:socket.getdefaulttimeout() requests 库 使用过程中timeout值最大可设值? 

9、Requests在get时url中的百分号(%)被强制编码为 25% 可用如下方法迂回解决。(参考评论

1
2
3
4
5
6
7
import  requests
sn  =  requests.Session()
url  =  'http: / / xxx.net / xxx.aspx?Param = ASP.brief_result_aspx % 23 / % u5E74
req  =  requests.Request( 'GET' , url)
prepped  =  sn.prepare_request(req)
prepped.url  =  prepped.url.replace( '%25' '%' )
=  sn.send(prepped)

或者拆分后重新拼接:

1
2
3
4
import  requests
from  urllib  import  parse
url  =  'http://xxx.net/xxx.aspx?'  +  parse.urlencode( dict (parse.parse_qsl(parse.urlparse(url).query)))
=  sn.get(url)

10、post表单重复键值的处理:

1
2
3
4
5
dic  =  {
         'key1' : [ 'aaa' 'bbb' 'ccc' ],
         'key2' 'xxx' ,
     }
=  requests.post(url, data = dic)

这样会被编码成:key1=aaa&key1=bbb&key1=ccc&key2=xxx

11、用Requests实现聊天的小黄鸡和小黑鸡。(参考这篇文章

(1)、源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#coding=utf-8
import  requests
                                                                                                                     
class  SimSimi:
     def  __init__( self ):
         self .session  =  requests.Session()
                                                                                                                         
     def  initCookie( self ):
             headers  =  {
                 'x-requested-with' 'XMLHttpRequest' ,
                 'Accept-Language' 'zh-cn' ,
                 'Referer' 'http://www.simsimi.com/talk.htm' ,
                 'Accept' 'application/json, text/javascript, */*; q=0.01' ,
                 'Content-Type' 'application/json; charset=utf-8' ,
                 'Accept-Encoding' 'gzip, deflate' ,
                 'User-Agent' 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)' ,
                 'Host' 'www.simsimi.com' ,
                 'Connection' 'Keep-Alive' ,
                 #Cookie是否设置似乎没有关系
                 #'Cookie': '',
             }
             self .session.headers.update(headers)
             self .session.get( 'http://www.simsimi.com/talk.htm' )
             self .session.get( 'http://www.simsimi.com/talk.htm?lc=ch' )
             self .session.headers.update({ 'Referer' 'http://www.simsimi.com/talk.htm?lc=ch' })
                                                                                                                         
     def  getAnswer( self , message = "hello" ):
         url  =  'http://www.simsimi.com/func/req?msg=%s&lc=ch'
         =  self .session.get(url = url % message)
         if  len (r.json()) <  1 :
             return  ( "hehe..." )
         else :
             return  r.json()[ 'response' ]
simi  =  SimSimi()
simi.initCookie()
msg  =  u '花果山'
print (u 'topic: '  +  msg)
for  in  range ( 1 5 ):
     msg  =  simi.getAnswer(msg)
     print  i,
     if  %  2  = =  0 :
         print  u "小黄鸡:" ,
     else :
         print  u "小黑鸡:" ,
     try :
         print (msg)
     except :
         print ( '哈哈' )

(2)、效果

1
2
3
4
5
topic: 花果山
1 小黑鸡: 我也没去过 听说那是个传说 也许在他们心中吧
2 小黄鸡: 去过啊。很美的。
3 小黑鸡: 别难过哈~开心点~努力!让自己更优秀!让爱你的人自豪!
4 小黄鸡: 没关系。开心点。


相关阅读:

1、用Python测试网站用户名和密码的正确性

2、Python3 urllib.parse 常用函数示例


*** walker * Updated 2017-01-13 ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1228225如需转载请自行联系原作者


RQSLT

相关文章
|
4月前
|
数据采集 前端开发 算法
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
本文介绍了如何使用 Python 的 `requests` 库应对复杂的 HTTP 请求场景,包括 Spider Trap(蜘蛛陷阱)、SESSION 访问限制和请求频率限制。通过代理、CSS 类链接数控制、多账号切换和限流算法等技术手段,提高爬虫的稳定性和效率,增强在反爬虫环境中的生存能力。文中提供了详细的代码示例,帮助读者掌握这些高级用法。
306 1
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
|
4月前
|
JSON 网络协议 网络安全
详解新一代 HTTP 请求库:httpx
详解新一代 HTTP 请求库:httpx
329 1
|
5月前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
168 3
|
5月前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
109 2
|
5月前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
113 8
|
5月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
99 3
|
5月前
|
JSON API 开发者
Python网络编程新纪元:urllib与requests库,让你的HTTP请求无所不能
【9月更文挑战第9天】随着互联网的发展,网络编程成为现代软件开发的关键部分。Python凭借简洁、易读及强大的特性,在该领域展现出独特魅力。本文介绍了Python标准库中的`urllib`和第三方库`requests`在处理HTTP请求方面的优势。`urllib`虽API底层但功能全面,适用于深入控制HTTP请求;而`requests`则以简洁的API和人性化设计著称,使HTTP请求变得简单高效。两者互补共存,共同推动Python网络编程进入全新纪元,无论初学者还是资深开发者都能从中受益。
80 7
|
4月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
41 0
|
5月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
2月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
184 3