所以,最近我一直试图从结果网站(http://tnresults.nic.in/rgnfs.htm)上为我的学校成绩获得一些分数......我的朋友向我提出挑战,要求我获得他的分数只知道他的出生日期,而不知道他的注册号码。我如何通过尝试输入预定义范围内的注册号码(我知道他的出生日期,顺便说一句)来制作 Python 程序来解决这个问题?
我尝试使用请求,但它不允许我输入寄存器和 DOB ..
按下提交按钮后,它会创建一个具有以下格式的 POST 请求:
https://dge3.tn.nic.in/plusone/plusoneapi/marks/{registration number}/{DOB}
样本(以 112231 作为registration number
和01-01-2000
作为 DOB。
https://dge3.tn.nic.in/plusone/plusoneapi/marks/112231/01-01-2000
然后,您可以使用预定义的数组迭代不同的注册号。
注意:它必须是一个 POST 请求,而不是一个常规的 GET 请求。
您可能必须执行以下操作:
import requests
from bs4 import BeautifulSoup
DOB = '01-01-2000'
REGISTRATION_NUMBERS = ['1','2']
for reg_number in REGISTRATION_NUMBERS:
result = requests.post(f"https://dge3.tn.nic.in/plusone/plusoneapi/marks/{reg_number}/{DOB}")
content = result.content
print(content)
## BeautifulSoup logic
我不知道该请求是否为您提供了您需要的信息,我没有有效的注册号和正确的出生日期,所以我无法真正测试它...
2019
年 7 月 9 日更新:既然您说页面不再工作并且网站已更改,我就查看了。似乎有些事情发生了变化,您现在必须向http://tnresults.nic.in/rgnfs.asp
. 字段“regno”、“dob”和“B1”(可选?)应该作为 x-www-form-urlencoded 发送。
由于这将返回“拒绝访问”,因此您应该将“Referer”标头设置为“ http://tnresults.nic.in/rgnfs.htm ”。所以:
import requests
from bs4 import BeautifulSoup
DOB = '23-10-2002'
REGISTRATION_NUMBERS = ['5709360']
headers = requests.utils.default_headers()
headers.update({'Referer': 'http://tnresults.nic.in/rgnfs.htm'})
for reg_number in REGISTRATION_NUMBERS:
post_data = {'regno': reg_number, 'dob': DOB}
result = requests.post(f"http://tnresults.nic.in/rgnfs.asp", data=post_data, headers=headers)
content = result.content
print(content)
## BeautifulSoup logic
现在您已经提供了有效的 DOB 和注册号,我自己测试成功了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句