Как выбрать значение из выпадающего списка, используя запросы в Python 3? - PullRequest
0 голосов
/ 11 июня 2019

Я хочу очистить данные с веб-сайта. https://xlnindia.gov.in/frm_G_Cold_S_Query.aspx. Я должен выбрать Штат как Дели , Район как АдаршНагар (4) и нажмите на кнопку Поиск и очистите всю информацию.

До сих пор я пытался использовать приведенный ниже код как

import requests
from bs4 import BeautifulSoup

Ошибка пришла как ' HTTPS 443 SSL ', которую я решил, используя ' verify = False

resp = requests.get('https://xlnindia.gov.in/frm_G_Cold_S_Query.aspx',verify=False)
soup = BeautifulSoup(resp.text,"lxml")

dictinfo = {i['name']:i.get('value','') for i in soup.select('input[name]')}
dictinfo['ddlState']='Delhi'
dictinfo['ddldistrict']='Adarsh Nagar (4)'
dictinfo['__EVENTTARGET']='btnSearch'
dictinfo = {k:(None,str(v)) for k,v in dictinfo.items()}
r=requests.post('https://xlnindia.gov.in/frm_G_Cold_S_Query.aspx',verify=False,files=dictinfo)
r

Ошибка: Response [500]

soup2

Ошибка: неверный аргумент обратной передачи или обратного вызова.Проверка события включена с помощьюв конфигурации или <% @ Page EnableEventValidation = "true"%> на странице.В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова исходят от серверного элемента управления, который первоначально их представил.Если данные верны и ожидаемы, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки.

Может кто-нибудь, пожалуйста, помогите мне очистить его или сделать это.

( Я могу использовать только ЗАПРОС & BEAUTIFULSOUP библиотека, без SELENIUM, MECHANIZE и т. д. библиотеки. )

1 Ответ

1 голос
/ 11 июня 2019

Попробуйте приведенный ниже скрипт, чтобы получить табличные результаты, предназначенные для заполнения, выбрав два выпадающих элемента, как вы указали выше на этой веб-странице. Оказалось, что для заполнения результатов вам нужно сделать два последующих почтовых запроса.

import requests
from bs4 import BeautifulSoup
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

url = 'https://xlnindia.gov.in/frm_G_Cold_S_Query.aspx'

with requests.Session() as s:
    s.headers['User-Agent'] = 'Mozilla/5.0'
    resp = s.get(url,verify=False)
    soup = BeautifulSoup(resp.text,"lxml")

    dictinfo = {i['name']:i.get('value','') for i in soup.select('input[name]')}
    dictinfo['ddlState'] = 'DL'

    res = s.post(url,data=dictinfo)
    soup_obj = BeautifulSoup(res.text,"lxml")

    payload = {i['name']:i.get('value','') for i in soup_obj.select('input[name]')}
    payload['ddldistrict'] = 'ADN'

    r = s.post(url,data=payload)
    sauce = BeautifulSoup(r.text,"lxml")
    for items in sauce.select("#dgDisplay tr"):
        data = [item.get_text(strip=True) for item in items.select("td")]
        print(data)

Вывод, который вы можете увидеть в консоли:

['Firm Name', 'City', 'Licences', 'Reg. Pharmacists / Comp. Person']
['A ONE MEDICOS', 'DELHI-251/1, GALI NO.1, KH, NO, 739/251/1, NEAR HIMACHAL BHAWAN,SARAI PIPAL THALA, VILLAGE AZAD PUR,', 'R - 2', 'virender kumar, DPH, [22295-17/10/2013]']
['AAROGYAM', 'DELHI-PVT. SHOP NO. 1, GF, 121,VILLAGE BHAROLA', 'R - 2', 'avinesh bhadoriya, DPH, [27033-]']
['ABCO INDIA', 'DELHI-SHOP NO-452/22,BHUSHAN BHAWAN RING ROAD,FLYOVER AZAD PUR', 'W - 2', 'sanjay dubey , SSC, [C-P-03/01/1997]']
['ADARSH MEDICOS', 'DELHI-NORTHERN SIDE B-107, GALI NO. 1,,MAJLIS PARK, VILLAGE BHAROLA,', 'R - 2', 'dilip kumar, BPH, [28036-11/01/2018]']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...