python - 用于表单发布的 Python 请求会话似乎没有持续存在
问题描述
我正在尝试 (1) 使用请求登录网站,然后 (2) 更新登录受限子页面上六个文本字段的值。我的代码似乎登录成功。状态码为 200,并且 print(login.text) 返回的输出仅在成功登录后才显示登录页面的 HTML。
但是,一旦我尝试将数据发布到下一页 (diary_url) 上的六个字段,我的请求会话似乎并没有保持登录状态。
有谁知道是什么导致了我的问题?下面是相关的 HTML 和 Python。
登录页面的 HTML
<div class="member-login">
<h2>Member Login</h2>
<ul class="list-unstyled">
<li>
</li>
<li class="username-field">
<label>Email Address:</label>
<input autocapitalize="none" class="text" id="username" name="username" placeholder="Email Address" size="12" type="text" value="" />
</li>
<li class="password-field">
<label>Password:</label>
<input class="text" id="password" name="password" placeholder="Password" size="12" type="password" value="" />
</li>
<li class="remember-field">
<input checked="checked" class="checkbox" id="remember_me" name="remember_me" type="checkbox" value="1" />
<label for="remember_me" >Remember me next time</label>
</li>
<li class="submit" >
<input type="submit" value="Log In" />
</li>
<li class="or or-static-page" >
<span>or</span>
<div class="hr"></div>
</li>
<li>
<a href="#" class="facebook-login-css bttn btn-primary" id="facebook-login-css">Log in with Facebook</a>
</li>
</ul>
</div>
我想通过帖子提交新数据的第二页的 HTML
<div class="col-1">
<h4>Meal Names:</h4>
<ol class="fieldset">
<li class="field">
<input class="text" id="meal_names_0_description" maxlength="30" name="meal_names[0][description]" size="30" type="text" value="A. 35P 3V 0F 20C" />
</li>
<li class="field">
<input class="text" id="meal_names_1_description" maxlength="30" name="meal_names[1][description]" size="30" type="text" value="B. 35P 3V 0F 20C" />
</li>
<li class="field">
<input class="text" id="meal_names_2_description" maxlength="30" name="meal_names[2][description]" size="30" type="text" value="C. 35P 3V 10F 20C" />
</li>
<li class="field">
<input class="text" id="meal_names_3_description" maxlength="30" name="meal_names[3][description]" size="30" type="text" value="D. 35P 3V 10F 35C" />
</li>
<li class="field">
<input class="text" id="meal_names_4_description" maxlength="30" name="meal_names[4][description]" size="30" type="text" value="E. 35P 3V 15F 55C" />
</li>
<li class="field">
<input class="text" id="meal_names_5_description" maxlength="30" name="meal_names[5][description]" size="30" type="text" value="WO. 35P 0V 0F 65C" />
</li>
</ol>
</div>
自定义 Python 代码以登录网站,然后提交新的字段名
import secrets, requests
meals={
0:'Leaf',
1:'Crackor',
2:'Stinky',
3:'Grape',
4:'Appol',
5:'Bellay'
}
mealnames={
'meal_names_0_description': meals[0],
'meal_names_1_description': meals[1],
'meal_names_2_description': meals[2],
'meal_names_3_description': meals[3],
'meal_names_4_description': meals[4],
'meal_names_5_description': meals[5]
}
payload={
'username': secrets.user,
'password': secrets.pw
}
with requests.Session() as s:
login_url="https://www.myfitnesspal.com/account/login"
diary_url='https://www.myfitnesspal.com/account/diary_settings'
login = s.post(login_url, data=payload)
if(login.status_code!=200):
print("BAD")
go_to_diary = s.get(diary_url)
diary_page = s.post(diary_url, data=mealnames)
解决方案
推荐阅读
- webhooks - Teams 连接器 - 消息卡中的操作
- python - 在 Pandas 的生成器列上运行 value-counts()?
- java - Java 1.7。如何在正则表达式中并排替换两个字符?
- c# - ItemTemplate 中 CheckBox 项目的一键式
- python - 过时的元素引用:循环浏览页面时元素未附加到页面文档
- javascript - 将 id 传递给每个
- database - 如何建立适用于所有 Mac 的 Java DB 连接,以便其 JAR 能够在 Windows 10 上建立连接?
- javascript - Next.js server.js 中的 ES 模块
- django - 我如何限制未付费的用户无法访问测验部分
- java - 如何展示迷宫?