【问题标题】:Click on submit button which does not have an id using selenium单击没有使用 selenium 的 id 的提交按钮
【发布时间】:2021-03-29 05:34:44
【问题描述】:

我尝试使用 on submit 功能单击提交按钮,但看不到结果。我要抓取的网站是

Jntuh

提交按钮具有以下属性

<input type="submit" value="Submit">

我用过这个.execute 脚本

Resultbrowser.execute_script("""document.getElementById("myForm").onsubmit();""")

我不知道网站是否有提交功能

完整代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

link = 'http://results.jntuh.ac.in/jsp/SearchResult.jsp?degree=btech&examCode=1442&etype=r17&type=intgrade'
hallticket = "1780XXXXXX"
dobval = '1998-03-01'
with webdriver.Chrome() as Resultbrowser:

    Resultbrowser.get(link)
    Hallfield = Resultbrowser.find_element_by_name("htno")
    Hallfield.send_keys(hallticket)
    Hallfield.send_keys(Keys.RETURN)
    dob = Resultbrowser.find_element_by_class_name('hasDatepicker')
    dob.send_keys(dobval)
    dob.send_keys(Keys.RETURN)
    dob.send_keys(Keys.TAB)
    time.sleep(2)
    Resultbrowser.execute_script("""
    document.querySelector("#txtInput").value = document.querySelector("#txtCaptcha").value
    """)
    time.sleep(5)
    Resultbrowser.execute_script("""document.getElementById("myForm").onsubmit();""")

    time.sleep(10)

【问题讨论】:

    标签: python selenium web scrape


    【解决方案1】:

    你快到了。通过id(即myForm)找到整个表单元素,并使用.submit-方法提交:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    
    link = 'http://results.jntuh.ac.in/jsp/SearchResult.jsp?degree=btech&examCode=1442&etype=r17&type=intgrade'
    hallticket = "1780XXXXXX"
    dobval = '1998-03-01'
    with webdriver.Chrome() as Resultbrowser:
    
        Resultbrowser.get(link)
        Hallfield = Resultbrowser.find_element_by_name("htno")
        Hallfield.send_keys(hallticket)
        Hallfield.send_keys(Keys.RETURN)
        dob = Resultbrowser.find_element_by_class_name('hasDatepicker')
        dob.send_keys(dobval)
        dob.send_keys(Keys.RETURN)
        dob.send_keys(Keys.TAB)
        time.sleep(2)
        Resultbrowser.execute_script("""
        document.querySelector("#txtInput").value = document.querySelector("#txtCaptcha").value
        """)
        time.sleep(5)
    
        form = Resultbrowser.find_element_by_id("myForm")
        form.submit()
    
        time.sleep(10)
    

    或者使用你已经写过的.execute_script-方法:

    Resultbrowser.execute_script("""document.getElementById("myForm").submit();""")
    

    即将onsubmit 替换为submit

    【讨论】:

    • 感谢 Sebastian,将结果存储在 mysql 数据库中的最佳方法是什么,我该如何实现它,我应该使用 xpath 来收集数据以及我如何了解我有哪些可能的选项,文档,链接会很有帮助
    • @Arshad 没问题。对于您的第二个问题,我可能会首先使用pandas.read_html 解析结果页面的表格。 This 页面似乎提供了有用的指南。对于 MySQL 部分,您应该打开另一个问题以提供更多详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2020-01-15
    • 2015-11-02
    • 1970-01-01
    相关资源
    最近更新 更多