0

我正在编写一个程序/脚本来从 Hoovers.com 检索一些关键信息。我目前有 2 个文件。一个是hoovers5.py(其中包含一些类),另一个是main.py.

hoovers5.py

def testlogin():
    import hlogin # this is a file that contains my hoovers login credentials
    from robobrowser import RoboBrowser

    browser = RoboBrowser()
    login_url = "https://subscriber.hoovers.com/H/login/login.html"
    browser.open(login_url)
    form = browser.get_form(id='loginForm')  # gets login form ID
    form['j_username'].value = hlogin._hname  # fills in hoovers login name
    form['j_password'].value = hlogin._hpass  # fills in hoovers password
    browser.submit_form(form)  # submits login

main.py

import hoovers as hv5
from robobrowser import RoboBrowser

hv5.testlogin()

browser = RoboBrowser()
browser.open('http://subscriber.hoovers.com/H/company360/overview.htmlcompanyId=26082233')
print browser.parsed

我已经多次测试了这段代码,如果我运行登录而不将其放入我的主文件中的函数中,则登录有效。它的工作原理是我可以执行以下操作并获得预期的解析值:

browser.open('http://subscriber.hoovers.com/H/company360/overview.htmlcompanyId=621076715')
print browser.parsed

但是,一旦我为登录创建了一个功能,登录似乎并没有……坚持?hoovers5.py我是否因为正在实例化一个新浏览器而丢失了我的文件中的会话main.py?如何将我的“会话”传递给我的主脚本?我尝试创建一个名为的对象browser2 = RoboBrowser(),然后通过它打开 URL,但这也不起作用。

我是否需要 cookie(如果,我将如何执行此操作?)或者我是否需要在我的函数中返回某些内容?

4

1 回答 1

1

您的函数创建一个 RoboBrowser()的,具有单独的状态。就好像您打开了一个新浏览器(不是新窗口或选项卡)并尝试在那里使用您的登录会话。

browser在函数和其余代码之间共享对象:

def testlogin(browser):
    import hlogin # this is a file that contains my hoovers login credentials

    login_url = "https://subscriber.hoovers.com/H/login/login.html"
    browser.open(login_url)
    form = browser.get_form(id='loginForm')  # gets login form ID
    form['j_username'].value = hlogin._hname  # fills in hoovers login name
    form['j_password'].value = hlogin._hpass  # fills in hoovers password
    browser.submit_form(form)  # submits login

并将其用作:

import hoovers as hv5
from robobrowser import RoboBrowser

browser = RoboBrowser()

hv5.testlogin(browser)

browser.open('http://subscriber.hoovers.com/H/company360/overview.htmlcompanyId=26082233')
print browser.parsed

现在您有了一个 browser对象,登录会话现在存储在该对象中,您可以继续将该会话用于其他 URL。

于 2015-10-15T06:43:45.403 回答