我已经试着在这里阅读了10多个关于堆栈溢出的问题,所以如果之前有人问过这个问题,请原谅我。我很少问问题,因为我总觉得我的答案就在这里,我所要做的就是寻找答案,但我必须承认我在这里不知所措
在使用Python请求模块浏览特定网站(http://ecargo.mercosulline.com.br/)之后,我希望能够从该网站自动下载一些报告。但是,我无法通过登录屏幕。。哈哈
如果我尝试了许多不同的代码片段,我会将我最“自信”的内容粘贴到下面:
with requests.Session() as s:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'}
payload = {
#'txt_nome':'username',
#'txt_senha':'password'
'usuario':'username',
'senha':'password'
}
url = 'http://ecargo.mercosulline.com.br/SERVICOS/WSMontarMenu.Service.svc/rest/ChecarUsuario'
#url = 'http://ecargo.mercosulline.com.br/NovoIndex.asp'
#r = s.get(url)
#print(r.content)
r = s.post(url, data=payload, headers=headers)
print(r.text)
登录时查看页面时,我看到我的浏览器发出2个“POST”请求:
第一名http://ecargo.mercosulline.com.br/SERVICOS/WSMontarMenu.Service.svc/rest/ChecarUsuario 用户名的字段名为“usuario”,密码的字段名为“senha”
第二名http://ecargo.mercosulline.com.br/NovoIndex.asp 在那里,它使用网页表单名称(txt_nome和txt_senha),如下面的html所示:
<form name="frmLogin">
<br/>
<div class="form-group">
<input class="form-control" placeholder="Usuário" name="txt_nome" type="text" value="{{viewModel.usuario}}" autofocus ng-model="viewModel.usuario">
</div>
<br/>
<div class="form-group">
<input class="form-control" placeholder="Senha" name="txt_senha" type="password" value="{{viewModel.senha}}" ng-model="viewModel.senha">
</div>
<br/>
<button class="btn btn-lg btn-success btn-block" type="submit" ng-click="viewModel.logar()">Entrar</button>
<br/>
</form>
如果我在第一个URL中发布数据,它根本不起作用-只会给我一个错误并说“查看服务器日志了解更多详细信息” 如果我在第二个URL中发布数据并打印其内容,它只会将我带回登录页面
看起来这个页面是用AngularJS创建的,所以我不确定请求模块是否正确?有人能帮我吗
首先,您必须使用
Browser
Developer Tools,然后导航到Network Monitor然后尝试登录到该站点
你会注意到以下几点:
这意味着一个
POST
请求已经使用JSON
完成,您需要使用json=
但是如果它是form-data
,那么您将使用data=
选中document作为引用
相关问题 更多 >
编程相关推荐