Я не тестировал ваш payload
, но я не знаю, почему вы добавляете %3D
к __VIEWSTATE
Я использую словарь, который requests
автоматически преобразуется в строку, а я не Не нужно добавлять &
вручную. И мне не нужно использовать %24
вместо $
в ctl00$wBusqueda$txtBusqueda
, et c.
payload = {
'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__VIEWSTATE': soup.find(id="__VIEWSTATE")['value'],
'__VIEWSTATEGENERATOR': soup.find(id="__VIEWSTATEGENERATOR")['value'],
'__EVENTVALIDATION': soup.find(id="__EVENTVALIDATION")['value'],
'ctl00$wBusqueda$txtBusqueda': '',
'ctl00$ContentPrincipal$txtBusqueda': search_text,
'ctl00$ContentPrincipal$btnBuscar': 'Buscar',
}
BTW: Код работает без заголовков, но Я оставляю их в комментариях.
import requests
from bs4 import BeautifulSoup
url = 'https://www.cnmv.es/portal/Consultas/BusquedaPorEntidad.aspx'
search_text = 'aaa'
r = requests.get('https://www.cnmv.es/portal/Consultas/BusquedaPorEntidad.aspx')
soup = BeautifulSoup(r.content, 'html.parser')
payload = {
'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__VIEWSTATE': soup.find(id="__VIEWSTATE")['value'],
'__VIEWSTATEGENERATOR': soup.find(id="__VIEWSTATEGENERATOR")['value'],
'__EVENTVALIDATION': soup.find(id="__EVENTVALIDATION")['value'],
'ctl00$wBusqueda$txtBusqueda': '',
'ctl00$ContentPrincipal$txtBusqueda': search_text,
'ctl00$ContentPrincipal$btnBuscar': 'Buscar',
}
headers = {
# 'Connection': 'keep-alive',
# 'Cache-Control': 'max-age=0',
# 'Upgrade-Insecure-Requests': '1',
# 'Origin': 'https://www.cnmv.es',
# 'Content-Type': 'application/x-www-form-urlencoded',
# 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
# 'Sec-Fetch-Site': 'same-origin',
# 'Sec-Fetch-Mode': 'navigate',
# 'Sec-Fetch-User': '?1',
# 'Sec-Fetch-Dest': 'document',
# 'Referer': 'https://www.cnmv.es/portal/Consultas/BusquedaPorEntidad.aspx',
# 'Accept-Language': 'en-US,en;q=0.9',
}
r = requests.post(url, headers=headers, data=payload)
#print(response.text)
soup = BeautifulSoup(r.content, 'html.parser')
for item in soup.find_all('option'):
print(item['value'], '|', item.text)
Результат:
CLP3846 | AAA TRADE LTD
V85543155 | DWS DINERO GOBIERNOS AAA, FI
V85263911 | EUROVALOR DEUDA PUBLICA EUROPEA AAA, FI
9686 | WWW.AAARATEDBOND.COM