我正在尝试编写一个程序,可以在特定的时间段内自动填写并提交表单。
但我不知道如何以及从哪里开始。我在谷歌搜索这个,但只产生非常一般的答案,如使用JavaScript,python。谁能告诉我应该先学习哪种语言?
尽管这个线程的通用建议相当不错,但它相当广泛。我自己已经解决了这个问题,尽管事实上我发布了一个功能齐全的例子,但它被主持人删除了,尽管“理论上回答了问题”。
因此,对于任何希望解决此问题的人,您将需要执行以下操作:使用Selenium和openpyxl,这两个模块相对简单,将完美地执行此任务。
您将使用selenium打开您的网页,并检索您希望填充的相关html元素。如果您不熟悉HTML,我建议您通过xPath查找元素。 Xpath查找器谷歌chrome插件将使这很容易做到。
driver.get()和driver.find_element_by_xpath()将是您需要的功能。
我们将使用openpyxl来处理我们的Excel工作表。 'load_workbook()'将加载一个工作簿。然后,我们将使用'sheet = workbook.active'函数从工作簿中访问工作表。
我们现在可以打开我们的网站并选择一个Excel工作表。
现在我们需要将单元格值分配给变量,以便我们可以填充HTML表单。我们为工作簿中的每个COLUMN分配一个变量。因此,如果列A包含first_names,我们可以通过编写'FNAME = sheet ['A']来为变量赋值。现在我们有了一种在列中引用单元格的方法,我们可以开始将数据输入到HTML表单中。
我们使用Selenium中的.send_keys()函数填充表单。
first_name.send_keys(FNAME.value)
.value确保显示正确的值,因为有时selenium会打印单元格函数而不是值,我们不希望这种情况发生。
现在我们可以从Excel工作表中将值打印到HTML表单中,我们需要遍历每一行。我们使用简单的while循环执行此操作:
i = 1
x = 1
while x <= 50:
first_name.send_keys(FNAME[i].value)
i+=1
x+=1
driver.quit
一旦循环发生50次,驱动程序将退出,关闭浏览器并停止脚本。
在尝试自动执行此操作时,您可能会发现其他一些错误信息:
driver.back()
time.sleep()
如果您希望看到一个实际的工作示例随意PM我,因为显然在这里发布它不会有助于讨论。
你找到的答案一般都是正确的。我会试着向你解释一下。
当您尝试自动化某些活动时,您必须基本上使用script language
脚本语言的一个例子是Python。
所以你已经有了自己的脚本。现在你需要在页面上注入它。可以为你做的编程语言是Javascript, or JS。它允许您与网页交谈,获取数据/参考或POST数据。
我建议你用一个名为Python的库来编写一个Selenium Webdriver脚本。
实现您的想法很容易。