【问题标题】:Python requests_html submit a form by clicking a button using JQueryPython requests_html 通过使用 JQuery 单击按钮来提交表单
【发布时间】:2019-07-20 04:53:45
【问题描述】:

我正在探索Kenneth Reitz's requests_html 并尝试使用 Jquery 提交一个 JS 渲染网页的表单。我不知道该怎么做,但这是我的尝试:

from requests_html import HTMLSession
url = "https://example.com"
session = HTMLSession()
r = session.get(url)
r.html.render()
script = """
       () => {
         $("#some_input_field").val("Some value");
         $("#submit_button").click();
         }
         """
r.html.render(script=script, reload=False)

但是,没有在输入字段上设置值并且它没有提交表单...... 有什么方法可以模拟按钮单击或通过 requests_html 中的xhr 提交表单?

例如:如果我们使用 selenium,我们可以通过键入很容易地模拟按钮点击:

element.click()

【问题讨论】:

    标签: jquery python-3.x python-requests-html


    【解决方案1】:

    好的,以下代码适用于我的情况:

    from requests_html import HTMLSession
    url = "https://example.com"
    session = HTMLSession()
    r = session.get(url)
    r.html.render()
    script = """
           () => {
                  if ( jQuery.isReady ) {  
                       $("#some_input_field").val("Some value");
                       $("#submit_button").click();
                  }
            }
             """
    r.html.render(script=script, reload=False)
    

    编辑:更好的方法应该是:

    from requests_html import HTMLSession
    url = "https://example.com"
    session = HTMLSession()
    r = session.get(url)
    r.html.render()
    script = """
           () => {
                  $(document).ready(function() {  
                       $("#some_input_field").val("Some value");
                       $("#submit_button").click();
                  })
            }
             """
    r.html.render(script=script, reload=False)
    

    【讨论】:

    • 非常感谢您看到这个,您能否解释一下script= 之后的部分为什么以及如何工作?
    • @JasonGoal script 变量是一个包含 JavaScript 代码的字符串。它填充一个输入字段并单击提交按钮。 ()=>{} 是一个箭头函数。第二个函数中的美元符号是JQuery
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    相关资源
    最近更新 更多