当前位置: 首页 > 知识库问答 >
问题:

如何"登录"到一个网站使用Python的请求模块?

费秦迟
2023-03-14

我试图发布一个请求登录到使用Python中的请求模块的网站,但它不是真的工作。我是新来的...所以我不知道我是否应该制作我的用户名和密码cookie或者我发现的某种类型的HTTP授权(??)。

from pyquery import PyQuery
import requests

url = 'http://www.locationary.com/home/index2.jsp'

所以现在,我想我应该用“post”和cookies。。。。

ck = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}

r = requests.post(url, cookies=ck)

content = r.text

q = PyQuery(content)

title = q("title").text()

print title

我有一种感觉,我做错了饼干的事...我不知道。

如果登录不正确,主页的标题应该显示为“Locationary.com”,如果登录不正确,则应显示为“homepage”

如果你能向我解释一些关于请求和饼干的事情,并帮助我解决这个问题,我将不胜感激。: D

谢谢

...它还没有真正起作用。可以这就是主页HTML在您登录之前所说的:

</td><td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_email.gif">    </td>
<td><input class="Data_Entry_Field_Login" type="text" name="inUserName" id="inUserName"  size="25"></td>
<td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_password.gif"> </td>
<td><input  class="Data_Entry_Field_Login"  type="password" name="inUserPass"     id="inUserPass"></td>

所以我认为我做得对,但是输出仍然是“ocationary.com”

第二次编辑:

我希望能够长时间保持登录状态,每当我请求该域下的页面时,我都希望内容显示为我已登录。

共有3个答案

劳研
2023-03-14

让我试着简化一下,假设该站点的URL是http://example.com/ 让我们假设您需要通过填写用户名和密码注册,因此我们转到登录页面http://example.com/login.php 现在,查看它的源代码,并搜索它将以类似于标签的形式出现的动作URL

 <form name="loginform" method="post" action="userinfo.php">

现在userinfo.php绝对URL,这将是'http://example.com/userinfo.php',现在运行一个简单的python脚本

import requests
url = 'http://example.com/userinfo.php'
values = {'username': 'user',
          'password': 'pass'}

r = requests.post(url, data=values)
print r.content

我希望有一天这能帮助别人。

奚英朗
2023-03-14

让我们调用您的ck变量payload,就像在python请求文档中一样:

payload = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}
url = 'http://www.locationary.com/home/index2.jsp'
requests.post(url, data=payload)

见下文https://stackoverflow.com/a/17633072/111362。

康弘义
2023-03-14

我知道你已经找到了另一个解决方案,但对于像我这样发现这个问题、寻找同样问题的人来说,可以通过以下请求实现:

首先,像Marcus所做的那样,检查登录表单的来源,以获得三条信息——表单发布到的网址,以及用户名和密码字段的名称属性。在他的例子中,它们是inUserName和inUserPass。

一旦你得到了,你可以使用请求。Session()实例向登录url发出post请求,并将您的登录详细信息作为有效负载。从会话实例发出请求基本上与正常使用请求相同,它只是增加了持久性,允许您存储和使用cookie等。

假设您的登录尝试成功,您可以简单地使用会话实例向站点发出进一步的请求。标识您的cookie将用于授权请求。

示例

import requests

# Fill in your details here to be posted to the login form.
payload = {
    'inUserName': 'username',
    'inUserPass': 'password'
}

# Use 'with' to ensure the session context is closed after use.
with requests.Session() as s:
    p = s.post('LOGIN_URL', data=payload)
    # print the html returned or something more intelligent to see if it's a successful login page.
    print p.text

    # An authorised request.
    r = s.get('A protected web page url')
    print r.text
        # etc...
 类似资料:
  • 问题内容: 我正在尝试使用Python中的“请求”模块发布一个登录网站的请求,但它实际上无法正常工作。我是新来的…所以我不知道是否应该制作我的用户名和密码cookie或我发现的某种HTTP授权内容(??)。 所以现在,我认为我应该使用“发布”和cookie。 我有种感觉,我在做饼干的事情做错了…我不知道。 如果登录不正确,则首页标题应显示在“ Locationary.com”上;如果登录不正确,则

  • 问题内容: 我看到了另一个问题:如何使用Python登录网页并检索cookie以供以后使用? 但是,对该答案进行直接修改对我不起作用,因此我想知道如何实现我的目标。 为了提供上下文,我尝试登录,然后从以下页面中提取播放列表的名称: 我认为对于知道自己在做什么的人来说,这应该很简单。一些基本的代码可以登录到该网站并访问受密码保护的页面,这非常棒,如果您能用一两句话来解释代码中的每一行在做什么,那会更

  • 问题内容: 我正在尝试使用Python登录到此页面。 我尝试使用另一篇文章中描述的步骤,并获得了以下代码: 但这给了我以下输出: 我究竟做错了什么? 问题答案: 我建议使用精彩的模块。 下面的代码将使您登录到该站点,并在会话期间将cookie保留下来。

  • 我正试着从下面的网站刮取一些信息。我是新来的,所以不完全了解正在发生的事情。我基本上是从我在互联网上找到的各种例子中获取信息,我正在使用selenium和python来帮助我导航到页面,从那里我可以刮取一些信息,我使用了下面的脚本,我可以导航到主页,关闭cookies并点击登录。此时,将弹出一个用于输入用户id和密码的弹出窗口div元素未被识别,每次我得到的错误是不存在这样的元素时,我添加了具有预

  • 问题内容: 我想访问网站https://myoffice.bt.com的某些页面,该页面需要使用Java进行用户身份验证。我们必须先登录才能访问页面。我写了以下代码。 但是它给出了以下错误。 如果我取消注释get.setFollowingRedirects行,则会出现另一个错误。 有人能帮我一下吗?我们可以使用HttpClient进行基于表单的身份验证吗? 谢谢。 问题答案: 首先-请不要命名您的

  • 问题内容: 如果我想抓取一个需要先使用密码登录的网站,我该如何使用beautifulsoup4库开始使用python抓取它?以下是我对不需要登录的网站的处理方式。 应该如何更改代码以适应登录?假设我要抓取的网站是一个需要登录的论坛。一个示例是http://forum.arduino.cc/index.php 问题答案: 您可以使用机械化: 或urllib-使用urllib2登录网站