我正在使用mechanize(and following this tutorial)尝试登录网站。我想尝试在Twitter上测试它,所以这是我提出的脚本:
import mechanize
import cookielib
username = 'user' # your username/email
password = 'pass' # your password
br = mechanize.Browser()
# set cookies
cookies = cookielib.LWPCookieJar()
br.set_cookiejar(cookies)
# browser settings (used to emulate a browser)
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_debug_http(False)
br.set_debug_responses(False)
br.set_debug_redirects(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time = 1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open('http://twitter.com/') # open twitter
br.select_form(nr=1) # select the form
br['session[username_or_email]'] = username
br['session[password]'] = password
br.submit() # submit the login data
print(br.response().read) # print the response
这是我运行脚本时的Python输出:
$ python twitterLoginTest.py
<bound method response_seek_wrapper.read of <response_seek_wrapper at 0x8feaeac whose wrapped object = <closeable_response at 0x8feeaac whose fp = <socket._fileobject object at 0x8feb42c>>>>
(文件的名称是twitterLoginTest.py)
现在,我不确定这个回应意味着什么,但它看起来并不正确。
所以这是我的问题
1)是否有更好的方法使用脚本登录网站(不只是推特,而是任何网站,以及可以修改为在任何登录网站上工作的方法)?
2)我的剧本在哪里出错?
3)如何解决问题,登录?
我假设问题源于br.select_form(nr=1)
(这是我选择表格的地方),但我不知道该放什么(所以我认为这将是第二种形式)因为Twitter不列出他们的表格。
答案 0 :(得分:4)
我相信最后一行应该是:
print(br.response().read()) # print the response
请注意()
之后的read
。您目前只是打印read
方法本身,而不是调用read
方法的结果。