【发布时间】:2021-04-23 06:08:51
【问题描述】:
我正在尝试从在网页中选择某些选项时填充的表格中抓取名称。这是在该站点中生成表的options。但是,当我尝试使用下面的脚本执行相同操作时,我总是得到状态 500。我使用 selenium 获得了成功,所以我没有寻求任何基于 selenium 的解决方案。
到目前为止我已经写了:
import requests
from bs4 import BeautifulSoup
link = 'https://rederef-saude.appspot.com/proximidade/prestador/buscar?'
params = {
'canal': '1',
'latitude': '-23.5505199',
'longitude': '-46.63330939999999',
'categoria': '1',
'produto': '557',
'plano': '18051',
'nome': '',
'qualificacoes': '',
'prefixoEmpresa': '',
'empresa': '',
'especialidade': '',
'procedimento': '',
'tipoPesquisaProcedimento': '1',
'raio': '200000'
}
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36',
'referer': 'https://rederef-saude.appspot.com/rederef/buscaPrestadores?login=publico&canal=1&data=23/04/2021&hora=00:16:55&tipoProduto=M&produto=557&plano=18051',
'x-requested-with': 'XMLHttpRequest',
'content-type': 'application/json;charset=utf-8',
'accept': '*/*',
'captcha-token': ''
}
with requests.Session() as s:
s.headers = headers
res = s.get(link,params=params)
print(res.status_code)
如何使用请求从该表中抓取名称?
【问题讨论】:
-
不要将
?放在您的网址中。requests将在添加参数时添加它。你确定这是一个 GET 请求,而不是 POST? -
是的,这是一个获取请求。
-
有什么关于recaptcha的吗?
-
当我使用 selenium 创建脚本时,我没有遇到任何验证码,所以我认为它是一个占位符。
-
Chrome 也不会向您提供验证码,但如果您从 F12 网络选项卡记录会话,那里会发生很多事情,对重新验证码不太熟悉,但我想这很重要。 selenium 是否在 captcha-token 参数中设置了某些内容?
标签: python python-3.x web-scraping python-requests