python requests练习笔记

运行环境:win10 + python36

参考文档:

http://www.python-requests.org/en/master/
http://docs.python-requests.org/en/master/api/#requests.Session

模块安装:pip install requests

开始前例行导入模块:

import requests as rq

一个简单的访问网页例子:

r = rq.get("http://www.baidu.com.cn")

同理还有发送数据的post:

#
r = rq.post(posturl,data={'key':'value'})
#如果发送的数据是json格式的,那么data是要变通的,比如
#(2.4.2版新功能...现在都2.19了,原来是用json模块的json.dumps(data)格式化数据再发送的)
r = rq.post(posturl,json={'key':'value'})

请求数据的时候需要文件头:大概长这样

#文件头的作用我所知的只有反扒。
headers = {
    "Content-Type": "application/json;charset=UTF-8",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0",
}
#访问
r = rq.post(posturl,data={'key':'value'},headers=headers)
#还有请求超时设置(要知道有这回事,有需求时候再百度怎么用吧)
r = rq.post(posturl,data={'key':'value'},headers=headers,timeout=0.001)

请求之后,就是返回结果了,返回结果都在请求里,上例用r表示,结果的内容可以这样查看

print(r.text)
#如果请求失败呢?请看
print(r.status_code)
#还可以查看文件头
r.headers
#查看cookies
r.cookies
#回头看请求的网址
r.url

如果返回的是JSON数据,还可以格式化,同时赋值给j变量,然后就可以按json的取数方式取数了:

j = r.json()
#先看一下r的结构
print(r.text)
#假如r是这样的{"total": 1,"status": "200","rows": [{"accountAmount": 0.0,"amount": "4358.0","approve": true}]}
#那么数据可以这样取
print(j["total"])
print(j["rows"][0]["accountAmount"])

#如果是网页格式,一般可以用正则或者xpath进行取数
import re

from lxml import etree
etree.HTML()

如果 返回的结果r有乱码怎么办

#先查看编码
print(r.encoding)
#然后更改编码
r.encoding = "utf-8" 

提一下,遇到过一种情形,r返回的是json数据,编码是utf-8,然后r.text是乱码,但用json方法取数后是正常的,不知道原因。

 

下面说说session,用于跨请求保持某些参数,具体不懂,这里使用它来登陆网址,然后继续请求这个网站下的其他网址。

#首先是设置连接
conn = rq.session()
#然后是get一下这个网站的主页,这样就获取了这个网址的cookies了.
#有些登陆问题很烦的,百度是各种招数,太烦了,这里直接先get一下,获取了cookies。那么还需要设置其他吗?反正我登陆的网址不用了。
#忘了是什么问题导致我先get一下这个网址了。反正后来能登陆了,我把这个删了也没影响登陆成功了。有机会以后一定要好好研究一下
#半路出家的麻烦就在于基础太挫了,常识都没有。也就是说,这里先get可能是不需要的步骤。
conn.get("URL")
#再然后就是正式登陆网站了
login = conn.post(login_url, data={'key':'value'})
#查看一下请求结果
print(login.text)

#登陆成功的就可以在这个网站上遨游了,通常,这样搜索的请求类型就算是post,也可以用get来获取了(唔,我想当然的,也不知道说的对不对)。
search = conn.get(post_url&参数)

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值