python requests库学习

1.先bia一个国内镜像吧

  用法很简单 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

2.大二的时候受到小甲鱼的蛊惑,拿urllib爬美女写真图。。。。。。真的是超级麻烦(其实也没多麻烦)

3.前段时间听说有个很好用的包‘requests’,最近开学学计算机网络和互联网程序设计,于是就想起了这个,准备探索一下



先大概看了一下,真的很方便,因为之前老遇到转码的问题。。。一窍不通。反正就是bytes()、decode()、encode(),之间互相试。。。。。。

而这个真的就很简单了,拿到response以后直接.text就得到str了

 1 # -*- coding: utf-8 -*-
 2 import json
 3 import requests
 4
 5 URL = ‘https://api.github.com‘
 6
 7 def build_url(endpoint):
 8     return ‘/‘.join([URL, endpoint])
 9
10 def better_print(json_str):
11     return  json.dumps(json.loads(json_str), indent=4)
12
13 def request_method():
14     response = requests.get(build_url(‘users/liwenchi123000‘))
15     print(better_print(response.text))
16
17 if __name__ == ‘__main__‘:
18     request_method()

这个就是用requests.get()方法,利用github的一个查看用户的api来得到一些用户信息,当时是保密的。

带参数的请求,这个我自己还没有试,先看文档写下来吧

普通的请求

response = requests.get(URL, params={‘param1‘:‘value1‘,‘param2‘:‘value2‘})

表单参数提交

‘Content-Type: application/x-www-form-urlencoded‘
response = requests.post(URL, data={‘param1‘:‘value1‘, ‘param2‘:‘value2‘})

json参数提交(github就是用的这种)

‘Content-Type: application/json‘
response = requests.post(URL, json={‘param1‘: ‘value1‘, ‘param2‘: ‘value2‘})

还有异常检测

例如下面这个超时检测

 1 from requests import exceptions
 2
 3 def timeout_request():
 4     try:
 5         response = requests.get(‘https://www.baidu.com/‘, timeout=0.05)
 6     except exceptions.Timeout as e:
 7         print(e)
 8     else:
 9         print(response.text)
10
11 if __name__ == ‘__main__‘:
12     timeout_request()

0.05秒还是有点快的,显示的结果是

HTTPSConnectionPool(host=‘www.baidu.com‘, port=443): Read timed out. (read timeout=0.05)

如何自定义一个request

 1 def hard_request():
 2     from requests import Request, Session
 3     s = Session()
 4     headers = {‘User-Agent‘:‘fake1.3.4‘}
 5     request = Request(‘GET‘, build_url(‘user/emails‘), auth=(‘liwenchi123000‘,‘******‘), headers=headers)
 6     prepared = request.prepare()
 7     # 先准备一个request但是不发出去,先看一下它的headers和body
 8     print(prepared.headers)
 9     print(prepared.body)
10     # 现在发送,并设置延迟时间
11     response = s.send(prepared, timeout=5)
12     # 检查返回值
13     print(response.status_code)
14     print(response.request.headers)
15     print(response.text)
16
17 if __name__ == ‘__main__‘:
18     hard_request()

常见API

response

status_code 响应码

reason 相应结果

headers 头信息

url 地址

history 经历了什么

elapsed

request

encoding 编码格式

raw

content

text

json

时间: 2024-10-27 05:12:00

python requests库学习的相关文章

python requests库学习笔记(上)

尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.python-requests.org/zh_CN/latest/: requests库作者Kenneth Reitz个人主页:https://www.kennethreitz.org/: requests库github地址:https://github.com/requests/requests: requ

python requests库学习笔记(下)

1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions        #引入exceptions A:请求超时 def timeout_request():    try:        response = requests.get(build_uri('user/emails'), timeout=0.1)    except exceptions.Timeout as e:

【python标准库学习】thread,threading(二)多线程同步

继上一篇介绍了python的多线程和基本用法.也说到了python中多线程中的同步锁,这篇就来看看python中的多线程同步问题. 有时候很多个线程同时对一个资源进行修改,这个时候就容易发生错误,看看这个最简单的程序: import thread, time count = 0 def addCount(): global count for i in range(100000): count += 1 for i in range(10): thread.start_new_thread(ad

【python标准库学习】thread,threading(一)多线程的介绍和使用

在单个程序中我们经常用多线程来处理不同的工作,尤其是有的工作需要等,那么我们会新建一个线程去等然后执行某些操作,当做完事后线程退出被回收.当一个程序运行时,就会有一个进程被系统所创建,同时也会有一个线程运行,这个线程就是主线程main,在主线程中所创建的新的线程都是子线程,子线程通常都是做一些辅助的事.python中提供了thread和threading两个模块来支持多线程. python中使用线程有两种方式,第一种是用thread模块的start_new_thread函数,另一种是用threa

python第三方库学习之xlrd读取Excel文件

因为经常会涉及到从Excel表中导数据,所以就学习了python的xlrd来读取excel中的数据. 1.xlrd的安装 xlrd是python的第三方库,所以是需要自己安装的,可以在python的官网http://pypi.python.org/pypi/xlrd下载该模块来安装,也可以通过其他手段,比如easy_install或者pip啥的,我已经安装好pip所以就用最懒的方式来安装了pip install xlrd来安装. 2.分析excel文件的层级对象 要读取excel的数据,就要了解

大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。

python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url, **kwargs)-->session.request(method="get", url=url, **kwargs)-->session.send(request, **kwargs)-->adapter.send(request, **kwargs)-->

【python标准库学习】re模块

1.什么是re 正则表达式一门相对通用的语言,在python中也有对正则表达式的支持,那就是的内置re模块.正则表达式就是一系列的规则去匹配字符串然后进行相应的操作,这些规则网上一搜一大片,而re则是运用正则表达式来提供一系列的功能强大的接口让我们来调用.通常我们在对日志文件进行操作的时候会对正则表达式运用的比较多来得到我们希望得到的数据. 2.python中的转义符 正则表达式中通常用反斜杠'\'来代表转义,'\d'代表数字等,但是python本身也是通过反斜杠'\'来表示转义,所以就和正则表

Python:requests库、BeautifulSoup4库的基本使用(实现简单的网络爬虫)

Python:requests库.BeautifulSoup4库的基本使用(实现简单的网络爬虫) 一.requests库的基本使用 requests是python语言编写的简单易用的HTTP库,使用起来比urllib更加简洁方便. requests是第三方库,使用前需要通过pip安装. pip install requests 1.基本用法: import requests #以百度首页为例 response = requests.get('http://www.baidu.com') #res

python requests 基础学习

首先,Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 不友好.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务,所以学习reuqests模块,比较简洁好用(以后慢慢会学习scapy,更强大的库),安装就不用说了 1 导入模块 >>> import requests 2 直观感受一下发送请求的简洁 >>> r = requests.get('your url') &g