【问题标题】:Python 3, post method misleadingPython 3,post 方法误导
【发布时间】:2018-11-22 21:40:52
【问题描述】:

这里有两个示例演示了成功的 POST 请求。但我无法自主复制。

示例1

视觉要求:data={'SearchTxt':'bla'}

实际需要: data={'page':'search', 'SearchTxt':'bla'}

import requests
session = requests.Session()
a = session.head('https://www.axemusic.com')
session.cookies['Lm722stores'] = None
session.cookies.set('Lm722stores', '5h5i1rm6q3ur4mg67rs7kb77p4', domain='.axemusic.com', path='/')
response = session.post('https://www.axemusic.com/', data={'page':'search', 'SearchTxt':'bla'})
if response.text.find('Search results for bla') != -1: print('found')
else: print('not found')

示例2

视觉要求:https://stackoverflow.comdata={'q':'bla'}

实际需要:https://stackoverflow.com/searchdata={'q':'bla'}

import requests
session = requests.Session()
a = session.head('https://stackoverflow.com')
session.cookies['prov'] = None
session.cookies.set('prov', '2922137c-e851-cd7e-8df4-9e5eb968ab33', domain='.stackoverflow.com', path='/')
response = session.post('https://stackoverflow.com/search', data={'q':'bla'})
if response.text.find('highlight">bla</span>') != -1: print('found')
else: print('not found')

有没有办法让这个过程更加自主。在知道 requests 执行 POST 实际需要什么之前,我宁愿不必手动测试浏览器中的每个输入并手动检查 GET 输出。

【问题讨论】:

  • 你在说什么?对不起,我无法理解。你能说得清楚一点吗?什么是“视觉要求”?
  • 当您访问 stackoverflow.com 时...您可以选择搜索...但requests 并非如此...。只有stackoverflow.com/search 允许您选择搜索
  • requests无关。你只是不明白网站是如何工作的。您可以选择搜索domain.com 并不意味着您的所有请求都发送到此路由。显然,您的部分或大部分请求被发送到其他特定路由。

标签: python python-3.x session python-requests urllib


【解决方案1】:

我宁愿不必手动测试浏览器中的每个输入并手动检查 GET 输出,然后才能知道执行 POST 的请求实际需要什么

是的,通过阅读公共 API 的文档。例如,https://api.stackexchange.com/docs

对于像 axemusic 这样的非公共 API,您只能靠自己了。这就像问“面包师觉得他的鸡蛋煮得怎么样?”不知道?

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2018-10-15
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多