【发布时间】:2020-11-24 12:56:54
【问题描述】:
我发送带有有效负载和搜索文本 aaa 的请求 https://www.cnmv.es/portal/Consultas/BusquedaPorEntidad.aspx,但得到了 javascript 响应。所以我需要渲染 javascript,但我不想使用 Selenium。我也不确定我的有效载荷是否良好。
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')
VIEWSTATE = soup.find(id="__VIEWSTATE")['value'] + '%3D&'
VIEWSTATEGENERATOR = '__VIEWSTATEGENERATOR=' + soup.find(id="__VIEWSTATEGENERATOR")['value']
EVENTVALIDATION = '&__EVENTVALIDATION' + soup.find(id="__EVENTVALIDATION")['value']
SEARCH = "&ctl00%24wBusqueda%24txtBusqueda=&ctl00%24ContentPrincipal%24txtBusqueda={0}&ctl00%24ContentPrincipal%24btnBuscar=Search".format(search_text)
payload = '__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=' + VIEWSTATE + VIEWSTATEGENERATOR + EVENTVALIDATION + SEARCH
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',
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
【问题讨论】:
-
您是否尝试在 Web 浏览器中关闭 JavaScript 并在 Web 浏览器中测试此页面?也许它在不能使用 JavaScript 时使用不同的值。
-
顺便说一句:您可以使用字典
payload = {...}和requets应该将其转换为字符串。 -
谢谢,我会尝试在网络浏览器中关闭 JavaScript。
-
此时我测试了一些代码并获得了 HTML,但如果我得到预期的结果,我还没有测试。
标签: javascript python web-scraping request