简体   繁体   中英

How to input some data into a website and get the output from the html table?

So, Recently I've been trying to get some marks from a result website ( http://tnresults.nic.in/rgnfs.htm ) for my school results.... My friends challenged me to get his marks for which I only know his DOB and not his Register Number.. How do I make a Python program to solve this by trying to input register numbers from a predefined range(I know his DOB, btw)?

I tried using requests, but it doesn't allow me to enter the register and DOB..

It creates a POST request with the following format after pushing the Submit button:

https://dge3.tn.nic.in/plusone/plusoneapi/marks/{registration number}/{DOB}

Sample (with 112231 as registration number and 01-01-2000 as DOB.

https://dge3.tn.nic.in/plusone/plusoneapi/marks/112231/01-01-2000

You can then iterate over different registration numbers with a predefined array.
Note: it has to be a POST request, not a regular GET request.

You probably have to do something like the following:

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

I don't know if that request is providing you the information you need, I don't have valid registration numbers combined with the correct date of birth, so I cannot really test it...

Update 2019-07-09:
Since you said the page is not working anymore and the website changed, I took a look. It seems that some things have changed you now have to make a post request to http://tnresults.nic.in/rgnfs.asp . The fields 'regno', 'dob' and 'B1' (optional?) should be send as x-www-form-urlencoded.

Since that will return an 'Access Denied' you should set the 'Referer'-header to ' http://tnresults.nic.in/rgnfs.htm '. so:

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

Tested it myself successfully now you've provided a valid DOB and registration number.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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