Python:请求无法登录网站 [英] Python: requests can't login to a website

查看:30
本文介绍了Python:请求无法登录网站的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要抓取需要登录的网站.我正在尝试创建一个 session 并登录,因为我必须在登录后抓取不同的页面.但不知道为什么它不起作用.

导入请求从 bs4 导入 BeautifulSoup登录数据 = {"log":"登录","登录":"我的邮箱","密码":"我的密码"}session = requests.session()session.post(登录网址,数据=登录数据)响应 = session.get(url)html = response.text汤 = BeautifulSoup(html, "html.parser")打印(soup.title.get_text())

标题显示它不起作用.

这是网站表单.

<input type="hidden" name="referer" value=""/><div class="form-group"><label for="email_text" class="col-sm-4 control-label">您的登录信息(电子邮件):</label><div class="col-sm-8"><input type="email" class="form-control" id="email_text" value="" name="login" autofocus data-validation='{"parent":".form-group","events":["keyup","blur"],"rules":[{"name":"notblank"},{"name":"email"}]}'/>

<div class="form-group"><label for="password_text" class="col-sm-4 control-label">密码:</label><div class="col-sm-8"><input type="password" class="form-control" id="password_text" name="password" data-validation='{"parent":".form-group","rules":[{"name":"min","min":5}]}'/>

<div class="form-group"><div class="col-sm-8 col-sm-offset-4"><div class="checkbox"><标签><input type="checkbox" name="rememberme">在这台电脑上记住我

<div class="form-group"><div class="col-sm-offset-4 col-sm-8"><button type="submit" class="btn btn-default btn-lg" name="log">登录您的帐户</button><a class="btn btn-default btn-lg mobile-show-inline-block" href="/account/create/">创建账户</a><a href="/account/lostpassword" class="btn btn-link btn-lg">忘记密码?</a>

</表单>

注意:不要建议我使用 selenium.我可以用 selenium 做到这一点,我测试过,但我必须坚持 requests 因为即使我使用 selenium 也会弹出控制台PhantomJS.

解决方案

首先尝试在登录页面上执行 get.也许它正在设置一些它希望出现在帖子中的 cookie.

I need to scrape website that requires login. I'm trying to create a session and login as I have to scrape different pages after logging in. But can't find out why it's not working.

import requests
from bs4 import BeautifulSoup

login_data = {
           "log":"login",
           "login":"my email",
           "password":"my password"
}

session = requests.session()
session.post(login_url, data=login_data)
response = session.get(url)
html = response.text
soup = BeautifulSoup(html, "html.parser")
print(soup.title.get_text())

Title shows it's not working.

Here is the website form.

<form method="post" id="signin-form" class="form-horizontal">
    <input type="hidden" name="referer" value="" />
    <div class="form-group">
        <label for="email_text" class="col-sm-4 control-label">Your login (email):</label>
        <div class="col-sm-8">
            <input type="email" class="form-control" id="email_text" value="" name="login" autofocus data-validation='{"parent":".form-group","events":["keyup","blur"],"rules":[{"name":"notblank"},{"name":"email"}]}' />
        </div>
    </div>
    <div class="form-group">
        <label for="password_text" class="col-sm-4 control-label">Password:</label>
        <div class="col-sm-8">
            <input type="password" class="form-control" id="password_text" name="password" data-validation='{"parent":".form-group","rules":[{"name":"min","min":5}]}' />
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-8 col-sm-offset-4">
            <div class="checkbox">
                <label>
                    <input type="checkbox" name="rememberme"> Remember me on this computer
                </label>
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-offset-4 col-sm-8">
            <button type="submit" class="btn btn-default btn-lg" name="log">Log into your account</button>
            <a class="btn btn-default btn-lg mobile-show-inline-block" href="/account/create/">Create account</a>
            <a href="/account/lostpassword" class="btn btn-link btn-lg">Forgot your password?</a>
        </div>
    </div>
</form>

N.B: Don't suggest me to use selenium. I can do this with selenium and I tested that but I have to stick to requests because selenium pops up console even if I use PhantomJS.

解决方案

Try doing a get on the login page first. Perhaps it's setting some cookies that it expects to be present on the post.

这篇关于Python:请求无法登录网站的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
Python最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆