如何使用Python通过弹出窗口登录网站

时间:2014-04-23 00:55:49

标签: python login web

我遇到了使用Python登录网站的问题。但是,网站登录是一个弹出窗口,因此我不知道如何使用Python输入我的登录信息。

所以我的目标是从网站下载一些需要先登录的数据。以前主页面有一个固定的输入区域,所以我用过请求,还有漂亮的汤。现在,登录成为弹出窗口,需要在其源代码中使用“onclick”。

以前的解决方案:

import requests, pandas as pd
import win32com.client
import datetime as date
from bs4 import BeautifulSoup

payload = {
    'action': 'client_login/client_authorise.asp?action=login',
    'companyName': XXX,
    'username': XXX,
    'password': XXX
}

with requests.Session() as s:
    s.post('http://www.mywebsite.com/', data = payload)
    raw_cape = s.get('http://www.mywebsite.com/the page has my data/')

登录窗口的源代码:

<table class='btn' cellpadding='0' cellspacing='0' style='margin-top:5px;' onclick="_infx.baltic.login.dialog();">
                        <tr>
                            <td class='l'><img src="/images/spacer.gif" alt='' style='width:6px;border:0px;'/></td>
                            <td class='m'>Login</td>
                            <td class='r'><img src="/images/spacer.gif" alt='' style='width:6px;border:0px;'/></td>
                        </tr>
                    </table>

现在是源代码的一部分(不确定这是否有用):

<p style='font-size:12px;line-height:16px;margin-bottom:8px;margin-top:8px;padding-left:0px;padding-top:0px;padding-bottom:0px;width:535px;padding:6px;background-color:#eee;border-radius:4px;'><b>_domain</b> - Remembers your login domain preference.</p>
                    <p style='font-size:12px;line-height:16px;margin-bottom:8px;margin-top:8px;padding-left:0px;padding-top:0px;padding-bottom:0px;width:535px;padding:6px;background-color:#eee;border-radius:4px;'><b>_company_id</b> - Remembers your login company id.</p>
                    <p style='font-size:12px;line-height:16px;margin-bottom:8px;margin-top:8px;padding-left:0px;padding-top:0px;padding-bottom:0px;width:535px;padding:6px;background-color:#eee;border-radius:4px;'><b>_company_name</b> - Remembers your login company name.</p>
                    <p style='font-size:12px;line-height:16px;margin-bottom:8px;margin-top:8px;padding-left:0px;padding-top:0px;padding-bottom:0px;width:535px;padding:6px;background-color:#eee;border-radius:4px;'><b>_username</b> - Remembers your login username.</p>

1 个答案:

答案 0 :(得分:0)

你想尝试进行单元测试吗?你可以用selenium来做这样的事情。

http://selenium-python.readthedocs.org/en/latest/api.html