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'
,
'%'
)
r
=
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)))
r
=
sn.get(url)
|
10、post表单重复键值的处理:
1
2
3
4
5
|
dic
=
{
'key1'
: [
'aaa'
,
'bbb'
,
'ccc'
],
'key2'
:
'xxx'
,
}
r
=
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'
r
=
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
i
in
range
(
1
,
5
):
msg
=
simi.getAnswer(msg)
print
i,
if
i
%
2
=
=
0
:
print
u
"小黄鸡:"
,
else
:
print
u
"小黑鸡:"
,
try
:
print
(msg)
except
:
print
(
'哈哈'
)
|
(2)、效果
1
2
3
4
5
|
topic: 花果山
1 小黑鸡: 我也没去过 听说那是个传说 也许在他们心中吧
2 小黄鸡: 去过啊。很美的。
3 小黑鸡: 别难过哈~开心点~努力!让自己更优秀!让爱你的人自豪!
4 小黄鸡: 没关系。开心点。
|
相关阅读:
*** walker * Updated 2017-01-13 ***
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1228225如需转载请自行联系原作者
RQSLT