Flask+requests发起页面请求示例

本文主要记录通过flask+requests发起请求的示例,包括:

1、发起get请求

2、发起post请求

3、发起可选请求

1、Flask和Requests怎么一起发送get请求?

1.1 flask访问url的时候,会执行路径下对应的方法。

  • 示例:访问百度
from flask import Flask
import requests


app = Flask(__name__)
url = 'http://www.baidu.com'

@app.route('/get')
def get():
    r = requests.get(url)
    r.encoding = 'utf-8'
    return r.text

app.run(debug=True)

 结果:

 

1.2 在页面上展示一个接口的断言结果

__author__ = 'catleer'
from flask import Flask
import requests


app = Flask(__name__)
url = 'http://www.baidu.com'

def get_assert():
    r = requests.get(url)
    if r.status_code == 200:
        return True
    else:
        return False

@app.route('/get')
def get():
    if get_assert():
        return '通过'
    else:
        return '失败'
        
app.run(debug=True)

 结果:

  • 将url变为其他具有反爬机制的url,会发现结果是失败,因为页面有反爬虫机制,不允许使用这种方式访问。对于这种情况,要记录失败的原因。在测试内部web页面的时候,要注意考虑这种情况。
  • 将url变为非法的url,会直接导致服务报错,所以当接口地址非法时,需要有异常处理机制

1.3 对get请求进行基本的异常处理

 

import re
from flask import Flask
import requests


app = Flask(__name__)

url1 = 'https://www.jianshu.com/u/39cef8a56bf9'
url = 'http://www'


def get_assert(url):
    # 判断url是否合法,需要了解url的构成,用正则匹配进行判断
    # url的构成:协议、域名、端口、虚拟目录、文件名、参数部分等  其中:协议、域名是必须存在的
    # 协议为:http或https  域名为:xxx.xxxx.xxx 端口为:数字
    
    if not re.match(r'^https?://[^\s]\*\.[^\s]\*\.[com|cn|net].\*', url):
        return 'URL不合法,无法执行接口用例'
        
    r = requests.get(url)
    r.encoding = 'utf-8'
    
    if r.status_code == 200:
        return True
    else:
        return r.text


@app.route('/get')
def get():
    if get_assert(url) == True:
        return '通过'
    else:
        return '失败' + ',' + '失败原因:' + get_assert(url)

结果: 

2、通过flask发送post请求

2.1 flask和requests怎么发送post请求呢?

以登录禅道系统为例,传入post的参数包括url和data,data为json格式,包括:token、用户名、密码等,需要与实际接口传入的参数一致。

"""
Created by catleer on 2018-06-08.
"""
__author__ = 'catleer'

import re

from flask import Flask
import requests

app = Flask(__name__)
url1 = 'https://www.jianshu.com/u/39cef8a56bf9'
url = 'http://139.99.152.146:8080/zentao/user-login.html'
data = {'authenticity_token': '+gy/zbvCNJATHwvygafFlOOR4gF5dl3bzheFlArNlN3IvlSuURRTZYbFZ5wTAdIwWl+TaykOF+lXbwQXWYkodg==',
        'user[email]': '123456789@qq.com',
        'user[password]': '123456789',
        'user[remember_me]': '0',
        'commit': '登录'}

def post_assert(url, data):
    # 判断url是否合法,需要了解url的构成,用正则匹配进行判断
    # url的构成:协议、域名、端口、虚拟目录、文件名、参数部分等  其中:协议、域名是必须存在的
    # 协议为:http或https  域名为:xxx.xxxx.xxx 端口为:数字
    if not re.match(r'^https?://[^\s]*\.[^\s]*\.[com|cn|net].*', url):
        return 'URL不合法,无法执行接口用例'
    r = requests.post(url, data=data)
    r.encoding = 'utf-8'
    if r.status_code == 200:
        return True
    else:
        return r.text

@app.route('/post')
def get():
    if post_assert(url, data) == True:
        return '通过'
    else:
        return '失败' + ',' + '失败原因:' + post_assert(url, data)

app.run(debug=True)

 

import re

from flask import Flask
import requests

app = Flask(__name__)
url1 = 'https://www.jianshu.com/u/39cef8a56bf9'
url = 'http://httpbin.org/anything'
data = {'a': 'hi'}

def post_assert(url, data):
    # 判断url是否合法,需要了解url的构成,用正则匹配进行判断
    # url的构成:协议、域名、端口、虚拟目录、文件名、参数部分等  其中:协议、域名是必须存在的
    # 协议为:http或https  域名为:xxx.xxxx.xxx 端口为:数字
    if not re.match(r'^https?://[^\s]*\.[com|cn|net|org].*', url):
        return 'URL不合法,无法执行接口用例'
    r = requests.post(url, data=data)
    r.encoding = 'utf-8'
    if r.status_code == 200:
        return True
    else:
        return r.text

@app.route('/post')
def get():
    if post_assert(url, data) == True:
        return '通过'
    else:
        return '失败' + ',' + '失败原因:' + post_assert(url, data)

app.run(debug=True)

3、通过Flask发送请求,请求可选

3.1 Flask发送请求

前面看到,可以通过flask发送get或post请求,那么怎么通过Flask发送任意类型的请求呢,怎么把这些集成在一个方法中?

通过自定义一个request方法,将get或post作为参数传入。

import re

from flask import Flask
import requests
from requests import Request, Session

app = Flask(__name__)
url1 = 'https://www.jianshu.com/u/39cef8a56bf9'
url = 'http://httpbin.org/anything'
data = {'a': 'hi'}

def try_request(method, url, data,
                header={}, stream=True, verify=False,
                proxies={}, cert=None, timeout=100):

    if not re.match(r'^https?://[^\s]*\.[com|cn|net|org].*', url):
        return 'URL不合法,无法执行接口用例'
    s = Session()
    method = method.upper()
    req = Request(method, url,
                  data=data,
                  headers=header
                  )
    prepped = req.prepare()

    resp = s.send(prepped,
                  stream=stream,
                  verify=verify,
                  proxies=proxies,
                  cert=cert,
                  timeout=timeout
                  )
    resp.encoding = 'utf-8'
    if resp.status_code == 200:
        return True
    else:
        return resp.text

# method = 'get'
@app.route('/requests/<method>')
def get(method):
    if try_request(method, url, data) == True:
        return '<h1>请求方法, %s!请求结果:通过</h1>' % method
    else:
        return '失败' + ',' + '失败原因:' + try_request(method, url, data)

app.run(debug=True)

 查看显示结果:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask是一个基于Python的轻量级Web应用框架,而Pyecharts是一个基于Echarts的Python图表库。结合使用Flask和Pyecharts可以方便地在Web应用中生成和展示各种类型的图表。 首先,你需要安装Flask和Pyecharts库。可以使用pip命令进行安装: ``` pip install flask pip install pyecharts ``` 接下来,你可以创建一个Flask应用,并在应用中使用Pyecharts生成图表。下面是一个简单的示例: ```python from flask import Flask, render_template from pyecharts import options as opts from pyecharts.charts import Bar app = Flask(__name__) @app.route('/') def index(): # 创建一个柱状图 bar = ( Bar() .add_xaxis(["A", "B", "C", "D", "E"]) .add_yaxis("Series 1", [5, 20, 36, 10, 75]) .set_global_opts(title_opts=opts.TitleOpts(title="Bar Chart")) ) # 将图表渲染为HTML页面 chart_html = bar.render_embed() return render_template('index.html', chart_html=chart_html) if __name__ == '__main__': app.run() ``` 在上面的示例中,我们创建了一个柱状图,并将其渲染为HTML页面。然后,通过Flask的`render_template`函数将生成的图表嵌入到模板文件`index.html`中。 在`index.html`文件中,你可以使用`chart_html`变量来显示图表: ```html <!DOCTYPE html> <html> <head> <title>Flask + Pyecharts</title> </head> <body> <h1>Flask + Pyecharts Example</h1> {{ chart_html|safe }} </body> </html> ``` 最后,你可以运行Flask应用,并在浏览器中访问`http://localhost:5000`来查看生成的图表。 这只是一个简单的示例,你可以根据自己的需求使用Pyecharts生成各种类型的图表,并在Flask应用中展示出来。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值