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

时间:2020-07-05 00:55:39

标签: python http

在以下链接(具有默认选项)中提交表单后,我试图检索页面: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 个答案:

答案 0 :(得分:0)

有两个问题

  1. 表单发送到其他网址: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.trillworks.com/中将其转换为Python代码