ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python机械化javascript提交按钮问题!

2019-11-05 21:08:12  阅读:213  来源: 互联网

标签:mechanize urlopen python


我用mechanize.browser模块制作了一些脚本.

问题之一是所有其他事情都可以,但是当submit()表单不起作用时,

所以我被发现有一些怀疑来源.

在html源中,我被发现如下.

我在想,loginCheck(this)在提交表单时出现问题.

但是如何使用机械化模块处理这种javascript函数,所以我可以

成功提交表格并可以收到结果吗?

以下是与loginCheck(this)javascript函数相关的网络源代码片段.

        function init(){
        FRMLOGIN.ID.focus();
    }

    function loginCheck(f){
        if(chkNull(f.ID, "아이디를"))
            return false;

        if(chkNull(f.PWD, "패스워드를"))
            return false;

        //f.target = "ifrmLoginHidden";
        f.action = (f.SECCHK.checked) ? "https://user.buddybuddy.co.kr/Login/Login.asp" : "http://user.buddybuddy.co.kr/Login/Login.asp";
    }

我知道机械化不支持javascript,所以我想通过编程使loginCheck()

python机械化代码的功能.

任何人都可以帮我使此javascript函数实现python机械化

翻译的代码?

可以正确登录网站吗?

如果非常感谢!

    # -*- coding: cp949-*-
import sys,os
import mechanize, urllib
import cookielib
from BeautifulSoup import BeautifulSoup,BeautifulStoneSoup,Tag
import datetime, time, socket
import re,sys,os,mechanize,urllib,time


br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

# Want debugging messages?
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)

# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6')]
br.open('http://user.buddybuddy.co.kr/Login/LoginForm.asp?URL=')
html = br.response().read()
print html

br.select_form(name='FRMLOGIN')
print br.viewing_html()
br.form['ID']='psh7943'
br.form['PWD']='qkrthgus'
br.submit()

print br.response().read()

如果有人可以帮助我..非常感谢!

解决方法:

您可以在浏览器中手动完成登录过程,并在点击“确定”按钮后检查(例如使用firefox中的Firebug,Chrome中的Developer Tools等)什么请求发送到该网站.通常这是一个POST请求,其中的数据来自登录表单.检查此请求中发送了哪些数据,并使用以下命令执行您自己的发布请求:

mechanize.urlopen(URL, POST_DATA). 

您可以使用以下方式从机械化的表单对象中提取POST_DATA(和post_url):

form.click_request_data()

但您可能需要进行一些修改.

很简单的例子:

br.select_form(name='form_name')
br.form['login']='login'
br.form['pass']='pass'
post_url, post_data, headers =  br.form.click_request_data()
mechanize.urlopen(post_url, post_data)

标签:mechanize,urlopen,python
来源: https://codeday.me/bug/20191105/1997712.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有