繁体   English   中英

使用 requests 模块模拟 HTTP 发布请求不起作用

[英]Simulating HTTP post request using requests module is not working

在以下链接(使用默认选项)提交表单后,我尝试检索页面:https://selfservice.pasadena.edu/prod/pw_psearch_sched.p_search

我意识到表单是post方法,所以我使用requests模块来模拟一个post请求。

r = requests.post(URL, data=form_data).text

对于表单数据,我使用 chrome 开发工具提取。

form_data = {
    'TERM': '202070',
    'TERM_DESC': 'Fall 2020',
    'sel_subj': 'dummy',
    'sel_day': 'dummy',
    'sel_schd': 'dummy',
    'sel_camp': 'dummy',
    'sel_ism': 'dummy',
    'sel_sess': 'dummy',
    'sel_instr': 'dummy',
    'sel_ptrm': 'dummy',
    'sel_attrib': 'dummy',
    'being_hh': '5',
    'begin_mi': '0',
    'begin_ap': 'a',
    'end_hh': '11',
    'end_mi': '0',
    'end_ap': 'p',
    'aa': 'N',
    'bb': 'N',
    'ee': 'N'
}

但它一直给我404 Error

起初,我尝试使用selenium来模拟点击提交按钮,但速度太慢了。

任何帮助,将不胜感激。

有两个问题

  1. 表格发送到不同的 url: https://selfservice.pasadena.edu/prod/pw_psearch_sched.p_listthislist

  2. 名称'begin_hh'中的小错误 - 你有'being_hh'


工作代码

import requests

data = {
    'TERM': '202070',
    'TERM_DESC': 'Fall 2020',
    'sel_subj':   'dummy',
    'sel_day':    'dummy',
    'sel_schd':   'dummy',
    'sel_camp':   'dummy',
    'sel_ism':    'dummy',
    'sel_sess':   'dummy',
    'sel_instr':  'dummy',
    'sel_ptrm':   'dummy',
    'sel_attrib': 'dummy',

    'sel_crse': '',
    'sel_crn': '',
    'sel_title': '',

    'begin_hh': '5',
    'begin_mi': '0',
    'begin_ap': 'a',
    'end_hh': '11',
    'end_mi': '0',
    'end_ap': 'p',
    'aa': 'N',
    'bb': 'N',
    'ee': 'N',
}

URL = 'https://selfservice.pasadena.edu/prod/pw_psearch_sched.p_listthislist'
r = requests.post(URL, data=data)
print(r.status_code)
#print(r.text)

顺便说一句:最初表单为某些字段发送两个值,它将是

'sel_subj':   ['dummy', '%'],
'sel_day':    'dummy',
'sel_schd':   ['dummy', '%'],
'sel_camp':   ['dummy', '%'],
'sel_ism':    ['dummy', '%'],
'sel_sess':   ['dummy', '%'],
'sel_instr':  ['dummy', '%'],
'sel_ptrm':   ['dummy', '%'],
'sel_attrib': ['dummy', '%'],

但是即使您发送一个值,页面也可以工作。


顺便说一句:DevTool中,您可以获得 rpogram curl的代码,稍后您可以使用页面https://curl.com将其转换为 Python 代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM