Как ввести некоторые данные на веб-сайт и получить вывод из таблицы HTML? - PullRequest
0 голосов
/ 02 июня 2019

Итак, недавно я пытался получить оценки на веб-сайте результатов (http://tnresults.nic.in/rgnfs.htm) за результаты в школе ... Мои друзья бросили мне вызов, чтобы получить его оценки, за которые я знаю только его DOB ине его регистрационный номер .. Как мне сделать программу Python, чтобы решить эту проблему, пытаясь ввести номера регистров из предопределенного диапазона (я знаю его DOB, кстати)?

Я пытался использовать запросы, но это нене позволяет мне войти в регистр и DOB ..

1 Ответ

0 голосов
/ 02 июня 2019

После нажатия кнопки «Отправить» создается запрос 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-07-09:
Поскольку вы сказали, что страница больше не работает, а сайт изменился, я посмотрел. Кажется, что некоторые вещи изменились, теперь вы должны отправить запрос на 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 и регистрационный номер.

...