python requests包的基本使用

Requests
安装requests模块:
D:\Install\Python36>pip3 install requests
请求方式
#coding:utf-8
import requests
requests.get("http://www.baidu.com")
requests.post("http://www.baidu.com")
#requests.put("http请求")
#requests.delete("http请求")
#requests.head("http请求")
#requests.options("http请求")

带参数GET请求
第一种
#coding:utf-8
import requests

response = requests.get("http://httpbin.org/get?name=gemey&age=22")
print(response.text)
第二种
#coding:utf-8
import requests

data = {
    ‘name‘: ‘tom‘,
    ‘age‘: 20
}
response = requests.get(‘http://httpbin.org/get‘, params=data)
print(response.text)

带请求头
#coding:utf-8
import requests
heads = {}
heads[‘User-Agent‘] = ‘Mozilla/5.0 ‘                           ‘(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ‘                           ‘(KHTML, like Gecko) Version/5.1 Safari/534.50‘
response = requests.get(‘http://www.baidu.com‘,headers=heads)

POST请求
#coding:utf-8
import requests

data = {‘name‘:‘tom‘,‘age‘:‘22‘}

response = requests.post(‘http://httpbin.org/post‘, data=data).status_code
#需要加cokkie使用下面的请求模式,get请求格式一致
#response = requests.post(‘http://httpbin.org/post‘, data=data, cookies=cookies).status_code

print (response)

#持续保持同一会话(使用相同的 session)
#coding:utf-8
import requests

session = requests.Session()#保持同一会话的核心
session.get(‘http://httpbin.org/cookies/set/number/12345‘)
response = session.get(‘http://httpbin.org/cookies‘)
print(response.text)

#证书取消验证
#coding:utf-8
import requests
from requests.packages import urllib3

urllib3.disable_warnings()  #从urllib3中消除警告
response = requests.get(‘https://www.12306.cn‘,verify=False)  #证书验证设为FALSE
print(response.status_code)

#超时异常
import urllib.request
response=urllib.request.urlopen(‘http://httpbin.org/get‘,timeout=0.1)  #设置超时时间为0.1秒,将抛出异常
print(response.read())
#运行结果
#urllib.error.URLError: <urlopen error timed out>

import urllib.request
from urllib import error
import socket
try:
    response=urllib.request.urlopen(‘http://httpbin.org/get‘,timeout=0.1)
    print(response.read())
except error.URLError as e:
    if isinstance(e.reason, socket.timeout):  # 判断对象是否为类的实例
        print(e.reason)  # 返回错误信息

#运行结果
#timed out
服务返回结果用法
#coding:utf-8
import requests

response = requests.get(‘http://www.baidu.com‘)
print (response.status_code)  # 打印状态码
print (response.url)         # 打印请求url
print (response.headers)       # 打印头信息
print (response.cookies)       # 打印cookie信息
print (response.text)   #以文本形式打印网页源码
print (response.content)  #以字节流形式打印

上传文件
>>> import requests
>>> url = ‘http://httpbin.org/post‘
>> files = {‘file‘: (‘e:\\a.py‘, open(‘e:\\a.py‘, ‘rb‘), ‘application/python‘,‘Expires‘: ‘0‘})}
>> r = requests.post(url, files=files)
>> r.text
返回json格式结果处理

#coding:utf-8
import requests

response = requests.get(‘http://httpbin.org/get‘)
print (response.text) #返回的是Unicode型的数据
print (response.json())  #response.json()方法同json.loads(response.text)
print (u"对返回结果进行json处理之后的类型是: ")
print (type(response.json()))

Urllib
urllib是python内置的HTTP请求库,无需安装即可使用,它包含了4个模块:
request:它是最基本的http请求模块,用来模拟发送请求
error:异常处理模块,如果出现错误可以捕获这些异常
parse:一个工具模块,提供了许多URL处理方法,如:拆分、解析、合并等
robotparser:主要用来识别网站的robots.txt文件,然后判断哪些网站可以爬
URL编码
#coding:utf-8
from urllib import parse
print (parse.quote(‘http://www.baidu.com‘)) #未编码斜杠
print (parse.quote_plus(‘http://www.baidu.com‘))  #编码斜杠

URL参数拼接及get、post请求
#coding:utf-8
import urllib
import urllib.parse
import urllib.request
param={‘spam‘:1,‘eggs‘:2,‘bacon‘:0}
print (u"初始参数")
print (param)
params= urllib.parse.urlencode(param)
print (u"编码后的参数")
print (params)
url="http://python.org/query?%s" % params
print (u"最终get请求")
print (‘urllib.request.urlopen("http://python.org/query?%s" % params)‘)
print (u"最终post请求方式")
print (‘urllib.request.urlopen("http://python.org/query",parmas)‘)

服务器返回结果
# coding: utf-8
import urllib
import urllib.request

response = urllib.request.urlopen(‘http://www.baidu.com‘)
print (response.getcode()) #打印状态码信息  其方法和response.getcode() 一样  都是打印当前response的状态码
print (response.headers) #打印出响应的头部信息,内容有服务器类型,时间、文本内容、连接状态等等
print (response.headers[‘Server‘])   #这种拿到响应头的方式需要加上参数,指定你想要获取的头部中那一条数据
print (response.geturl())  #获取响应的url
print (response.readline()) #读取html页面第一行
print (response.fileno())   #文件描述符
print (response.read()) #使用read()方法得到响应体内容,这时是一个字节流bytes,看到明文还需要decode为charset格式

带有header 发送数据
#! /usr/bin/env python3

import urllib.parse

import urllib.request

url = ‘http://httpbin.org/post‘

user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)‘

values = {  ‘act‘ : ‘login‘,  ‘login[email]‘ : ‘[email protected]‘,  ‘login[password]‘ : ‘123456‘  }

headers = { ‘User-Agent‘ : user_agent }

data = urllib.parse.urlencode(values)

req = urllib.request.Request(url, data.encode("utf-8"), headers)

response = urllib.request.urlopen(req)

the_page = response.read()

print(the_page.decode("utf8"))

异常处理
#! /usr/bin/env python3

from urllib.request import Request, urlopen

from urllib.error import URLError, HTTPError

req = Request(‘http://www.python.org/‘)

try:
    response = urlopen(req)
except HTTPError as e:
    print(‘The (www.python.org)server couldn\‘t fulfill the request.‘)
    print(‘Error code: ‘, e.code)
except URLError as e:
    print(‘We failed to reach a server.‘)
    print(‘Reason: ‘, e.reason)
else:
    print("good!")
    print(response.read().decode("utf8"))

设定超时时间
import socket

import urllib.request

# timeout in seconds

#timeout = 0.1  #超时的
timeout = 2
socket.setdefaulttimeout(timeout)

# this call to urllib.request.urlopen now uses the default timeout

# we have set in the socket module

req = urllib.request.Request(‘http://www.python.org/‘)

a = urllib.request.urlopen(req).read()

服务返回结果保存为html
# coding: utf-8
import urllib
import urllib.request

result=urllib.request.urlretrieve(‘https://www.cnblogs.com/sysu-blackbear/p/3629420.html‘,filename="e://pic//baidu.html")
print (u"网页保存文件地址地址: ",result[0])
print (u"网页内容: ",result[1])
urllib.request.urlcleanup() #清除urllib.urlretrieve产生的缓存

下载一张图片
方法1:
from urllib.request import urlretrieve
urlretrieve("http://pic1.win4000.com/pic/b/20/b42b4ca4c5_250_350.jpg", "e:\\pic\\1.jpg")

方法2:
from urllib.request import urlretrieve
import urllib

imgPath="http://pic1.win4000.com/pic/7/8a/1e81de5511_250_350.jpg"
pic_content = (urllib.request.urlopen(imgPath)).read()
f = open(‘e:\\pic\\img2.jpg‘, ‘wb‘)
f.write(pic_content)
f.close()

Urllib2:(python3以后已经合并成了urllib库)
python 3.x中urllib库和urilib2库合并成了urllib库。。
其中urllib2.urlopen()变成了urllib.request.urlopen()
urllib2.Request()变成了urllib.request.Request()

原文地址:https://www.cnblogs.com/xiaoxiao075/p/10926141.html

时间: 2024-10-08 21:53:15

python requests包的基本使用的相关文章

mac/linux 下 selenium 导入python requests包的问题解决

一.安装 Requests 通过pip安装 Code example: 1 $ pip     install     requests 或者,下载代码后安装: Code example: 1 2 3 $ git clone git:     //github     .com     /kennethreitz/requests     .git $     cd     requests $ python setup.py     install 以上内容源自http://www.itwhy

关于python requests包新版本设置代理的问题

在更新了requests包之后,发现我电脑上的charles工具无法再成功抓取到数据包.百度了半年都没有找到原因. 然后 我使用了 google 查到了 charles的最新的文档发现.需要设置代理,不然流量过去居然无法被默认抓取系统所有流量的charles抓到.真是 神奇. 具体在 stackoverflow上看到 先上一个 原文地址.http://stackoverflow.com/questions/8287628/proxies-with-python-requests-module 然

python requests 包 使用

1: 发送带 cookie 的 请求 resp = requests.get(self.url_item_list_first_page, cookies=self.cookies) >>> url = 'http://httpbin.org/cookies' >>> cookies = dict(cookies_are='working') >>> r = requests.get(url, cookies=cookies) >>>

python requests包用法

1 先创建session , 设置header. 调用get()函数 s = requests.session() headers = { 'Accept':'image/webp,image/*;q=0.8', 'User-Agent':'News/6.9.8.36 CFNetwork/975.0.3 Darwin/18.2.0', 'Accept-Language':'zh-cn' } s.headers.update(headers) s.get(url=url,params=params

Python+Requests接口测试教程(1):Fiddler抓包工具

本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测试和python+requests自动化的,首先本书确实写的比较基础,对基础内容也写的很详细,所以大神绕道. 为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 1.1 抓fir

Python第三方包 requests还是urllib?

我注意到一个很奇怪的事情.在极客学院爬虫课视频里,老师说要用requests,但是在其他学习群里,很多同学都在讨论urllib/urllib2相关. 然后就迷惑了,为什么会有这三个东西呢?扒了扒国内的博客网站,大多都是urllib相关,并且不推荐使用requests包.于是去墙外搜了下,竟然发现国外大多推荐用requests.我完全愣到了,完全相反的意见. 再仔细八一下,发现国内很多博客博主,只是说不建议使用requests,然后就介绍urllib,并没有说为什么不选requests:国外的稍微

python导入requests包

第一步:下载一个pip包解压,在cmd中进入pip解压目录进行安装,安装命令:python setup.py install 第二步:配置pip环境变量,在path后配置pip安装路径(pip安装路径位于python安装路径scripts目录下) 第三步:重启电脑(如果在使用pip进行命令操作时提示找不到pip的话) 第四步:在cmd中安装requests,进入到pip的安装目录后执行命令:pip install requests 第五步:检查requests安装是否成功.在pycharm中导入

49.Python使用requests包进行HTTP交互方法详解

简介 使用方法 传递QUERY参数 定制请求头 填写cookie 填充请求体 处理响应对象 重定向与访问历史 超时 Session对象 根据响应获取请求 SSL认证 HTTP认证 基本认证 摘要认证 代理场景 HTTPHTTPS代理 SOCKS代理 简介 Python的HTTP包有urllib.urllib2.httplib等,但是都需要了解较多的HTTP原理才能编码,借助requests包可以在较高的抽象层次上完成HTTP交互过程的开发.安装requests使用pip install requ

python+requests实现接口测试 - get与post请求使用

简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求.Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner.更重要的一点是它支持 Python3 哦! 一.安装 使pip安装: pip install requests 安装完后,运行一个简单的例子查看是否安装成功: impo