你能告诉我为什么这个网页刮板不能正确登录吗?

2024-05-16 07:49:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着做一个网页刮板,从网站上获取一些信息口语网,我有一个帐户。我有麻烦让我的刮板登录到该网站虽然。我将Python2.7与BeautifulSoup和请求一起使用。你知道吗

Here is a screenshot of my code

and here is a screenshot of the relevant HTML for the login

我尝试了此代码的几种变体,包括将授权密钥添加到登录信息中。然而,无论我尝试了什么,当我得到HTML时,我总是得到站点的“未登录版本”。你知道吗

我怀疑这与网站使用Javascript进行登录有关(它使用一个弹出框而不是单独的登录页面)。然而,我对Javascript的了解还不够,无法正确处理这个问题,而且我还没有找到任何关于这个问题的指南。你知道吗

所以希望有人能告诉我我的代码/进程有什么问题,或者我在哪里可以找到如何使用Javascript处理登录。你知道吗

谢谢!:)


Tags: ofthe代码刮板信息网页hereis
1条回答
网友
1楼 · 发布于 2024-05-16 07:49:31

与其尝试在javascript所在的登录页面上刮取信息,不如将信息post保存到https://colloquy.com/app/account/login,这样您就可以执行以下操作来尝试登录。你知道吗

import requests
resp = requests.post("https://colloquy.com/app/account/login", data={"email":"some.email@address.com","password":"Password"})

然后可以使用resp.cookies来刮取您想要访问的页面。你知道吗

cookies = resp.cookies
r = requests.get("https://colloquy.com/some-page", cookies=cookies)
# Get html etc

编辑: 通常在login页面的情况下,后台会有一个post操作,它会将所需的信息发送到登录。通常是usernamepassword等。这通常可以在Chrome上找到,使用Developer Tools或Firefox和Developer ToolsFirebug。为了得到它将张贴的信息,我把工具,然后将完成登录提示。在Network选项卡中(Chrome对于Firefox/Firebug可能有所不同),它通常会在您完成登录提示/页面并提交信息之后显示对某个页面的请求(通常是登录或类似的内容)。单击此操作将允许您查看此请求的一些信息,包括Request UrlRequest Method。还有一个区域将显示发布到Request UrlForm Data。然后,您应该能够使用此信息生成一个类似于具有Form DataPOSTRequest Url。你知道吗

注意:在某些情况下,web开发人员可能会试图阻止某些User-agents以避开自动脚本和/或机器人程序,但您通常可以将user-agent更改为普通代理程序以绕过此限制。你知道吗

requests.post(url, headers={"user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"})

相关问题 更多 >