session spider2

Spider

session_spider.py

import requests

session = requests.session()

session.post("http://127.0.0.1:5000/auth", data={
    "user": "will",
    "pwd": "123456"
})

# 携带cookie爬取数据
res = session.get("http://127.0.0.1:5000/books")
print(res.text)

Server

main.py

|____temps

| |____index.html

| |____login.html

main.py

from flask import Flask, request, render_template, make_response
import json
import uuid

app = Flask(__name__, template_folder="temps")

COOKIEID = "8EA6EC79097240F2B4DC58D45A0EC12E"


# 获取登录页面
@app.route("/login")
def login():
    return render_template("login.html")


# 登录认证
@app.route("/auth", methods=['POST'])
def auth():
    # 用户名密码验证
    user = request.form.get("user")
    pwd = request.form.get("pwd")

    if user == "will" and pwd == "123456":

        resp = make_response("success!")
        # 写cookie
        resp.set_cookie("login_id", COOKIEID)

        return resp
    else:
        return "fail!"


@app.route("/")
def index():
    # cookie验证
    login_id = request.cookies.get("login_id")
    if login_id == COOKIEID:
        return render_template("index.html")
    else:
        return "请登录!"


@app.route("/books")
def books():
    # cookie验证
    login_id = request.cookies.get("login_id")
    if login_id == COOKIEID:
        data = json.dumps(["西游记", "红楼梦", "三国演义", "水浒传"], ensure_ascii=False)
        return data
    else:
        return "请登录!"


app.run()  # 默认端口号

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h3>四大名著</h3>
<p class="content"></p>

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>

    // 基于jquery发送ajax请求
    $.ajax("http://127.0.0.1:5000/books", {
        "type": "get",
        success: function (res) {
            $(".content").html(res)
        }
    })
    
</script>

</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="/auth" method="post">
    用户名 <input type="text" name="user">
    密码 <input type="password" name="pwd">
    <input type="submit">
</form>

</body>
</html>

Last updated