你能告诉我为什么这个网络抓取工具无法正确登录吗?
Can you tell me why this web scraper isn't able to log in correctly?
我正在尝试制作一个网络抓取工具,以从我拥有帐户的网站 Colloquy.com 获取一些信息。不过,我无法让我的抓取工具登录到该站点。我将 Python 2.7 与 BeautifulSoup 和 Requests.
一起使用
Here is a screenshot of my code
and here is a screenshot of the relevant HTML for the login
我尝试了此代码的多种变体,包括将授权密钥添加到登录信息中。但是,无论我尝试了什么,当我得到 HTML.
时,我总是得到网站的 "un-logged-in version"
我怀疑这与网站使用 Javascript 登录(它使用弹出框而不是单独的登录页面)有关。但是,我对 Javascript 的了解还不足以正确处理这个问题,而且我还没有找到任何类型的指南来阐明这个特定问题。
所以希望有人能告诉我我的 code/process 出了什么问题,或者我在哪里可以找到如何使用 Javascript 处理登录。
谢谢! :)
他们没有尝试抓取 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 操作,该操作将发送所需的信息以进行登录。通常是 username
和 password
等。这通常可以在 Chrome 上使用 Developer Tools
或使用 Developer Tools or Firebug 的 Firefox 找到。为了获得 post 信息,我调出工具,然后完成登录提示。在“网络”选项卡中(Chrome--Firefox/Firebug 可能会有所不同)在您完成登录 prompt/page 并提交后,它通常会显示对某个页面(通常是登录或类似内容)的请求你的资料。单击此操作将允许您查看此请求的一些信息,包括 Request Url
和 Request Method
。还会有一个区域显示 Form Data
post 到 Request Url
。然后,您应该能够使用此信息制作类似于 POST
的 Request Url
和 Form Data
.
注意:在某些情况下,Web 开发人员可能会尝试阻止某些 User-agents 以阻止自动脚本 and/or 机器人,但您通常只需将 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"})
我正在尝试制作一个网络抓取工具,以从我拥有帐户的网站 Colloquy.com 获取一些信息。不过,我无法让我的抓取工具登录到该站点。我将 Python 2.7 与 BeautifulSoup 和 Requests.
一起使用Here is a screenshot of my code
and here is a screenshot of the relevant HTML for the login
我尝试了此代码的多种变体,包括将授权密钥添加到登录信息中。但是,无论我尝试了什么,当我得到 HTML.
时,我总是得到网站的 "un-logged-in version"我怀疑这与网站使用 Javascript 登录(它使用弹出框而不是单独的登录页面)有关。但是,我对 Javascript 的了解还不足以正确处理这个问题,而且我还没有找到任何类型的指南来阐明这个特定问题。
所以希望有人能告诉我我的 code/process 出了什么问题,或者我在哪里可以找到如何使用 Javascript 处理登录。
谢谢! :)
他们没有尝试抓取 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 操作,该操作将发送所需的信息以进行登录。通常是 username
和 password
等。这通常可以在 Chrome 上使用 Developer Tools
或使用 Developer Tools or Firebug 的 Firefox 找到。为了获得 post 信息,我调出工具,然后完成登录提示。在“网络”选项卡中(Chrome--Firefox/Firebug 可能会有所不同)在您完成登录 prompt/page 并提交后,它通常会显示对某个页面(通常是登录或类似内容)的请求你的资料。单击此操作将允许您查看此请求的一些信息,包括 Request Url
和 Request Method
。还会有一个区域显示 Form Data
post 到 Request Url
。然后,您应该能够使用此信息制作类似于 POST
的 Request Url
和 Form Data
.
注意:在某些情况下,Web 开发人员可能会尝试阻止某些 User-agents 以阻止自动脚本 and/or 机器人,但您通常只需将 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"})