切勿填写另一个无聊的在线表格。使用Python使其自动!
#python #自动化 #data

text

如今,每个人都想要您的数据,因此,如果您想打开一个新帐户,输入促销或获得免费的电子书,则必须填写一份信息。

,如果您只使用一次,这并不是一个大问题,但是如果您必须经常重复相同的过程,则它会变得单调,因此,理想的答案是用 python ð7自动化它。

让我们使用Python自动化Web表单中的填充。我们将首先查看如何使用Python列表中的数据填写表格,然后将向您展示如何制作Phoney Data以填写几种表格。

如何使用Python自动化Web表单填充

要使用Python自动化Web表单,我们将使用Selenium库。要安装它,请按照下面的步骤进行操作。

本书中涵盖的所有硒方法都可以在我的自动化作弊表中找到(免费PDF)。

1.设置硒

打开一个终端并键入以下命令以安装硒。

pip install selenium

这将安装Selenium 4,这是我们将在本教程中使用的版本。

然后我们必须获得Chromedriver:

  • 验证您的Google Chrome版本(在Chrome上,单击三个点,然后单击“帮助”,然后“关于Google Chrome”)。
  • 在此处下载正确的Chromedriver(您必须在任何Chrome升级后再次下载Chromedriver文件)。
  • 解压缩驱动程序并复制Chromedriver文件的位置。

2.填写Google表格

让我们开始通过导入我们将用于此自动化的库。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time

然后,我们为Chromedriver文件,我们要自动化的网站创建一个path,以及一个允许我们使用Selenium与网站进行通信的driver

网站:对于此简单的演示,我们将利用Google表单中的“联系信息”模板,您可以获得here

确保您复制链接。

如果链接断开或停止工作,请使用下面的模板使用自己的链接创建自己的表单。

text

注意:如果您创建自己的表格,请确保取消选中或关闭限制1响应”选项<< strong>设置,以便我们可以填写尽可能多的表格。

这是变量我们开始使用硒。

path = '/Users/.../chromedriver' # paste your path here
service = Service(executable_path=path)
website = 'https://forms.gle/GRgxTrG8FfXUCLE99' # paste your link
driver = webdriver.Chrome(service=service)

之后,我们使用driver.get()函数使用Selenium开放网站。

driver.get(website)

我们还添加了等待或延迟,以允许网页加载所有信息。为此,我们导入time模块。

import time
time.sleep(3) # 3 seconds delay

代码现在应该看起来像这样:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time
import pandas as pd

path = '/Users/.../chromedriver'  # your path
service = Service(executable_path=path)
website =  # your link
driver = webdriver.Chrome(service=service)

driver.get(website)
time.sleep(3)

要用硒填充信息,我们必须首先检查网站。

检查“ 名称”字段。为此,请右键单击网页第一个块的任何空部分,然后选择“ Inspect ”。

text

此选项可在所有最近的Web浏览器中使用。它将打开开发人员工具窗口屏幕右侧

您看到的是网站的HTML内容。

无论您在计算机上突出显示的元素如何,我​​们都会使用带有data-params属性名称的元素,因为它包含字段名称(例如,名称,电子邮件,地址,地址,电话号码,注释),我们正在寻找的taht for。

text

现在,让我们为“ name ”字段创建XPath。 XPath的语法如下:

text

此外,我们将使用contains()函数,因此我们的xpath将是:

//div[contains(@data-params, "Name")]

我们现在必须检查占位符“ 您的答案”的领域。

与其他网站不同,Google表单保持不一致的模式,其中某些字段(例如“ email ”)具有<input>标签,但其他字段,例如“ address ”, “有<textarea>标签。

text

带有“ 您的答案”的领域的最终XPATH对具有<input><textarea>标签的人会有所不同。

//div[contains(@data-params, "Name")]//textarea //div[contains(@data-params, "Name")]//input

要连接它们,我们将使用“ ”有条件的|

//div[contains(@data-params, "Name")]//textarea | //div[contains(@data-params, "Name")]//input

要填写数据,我们将使用.find_element.send_keys函数。

text_input = driver.find_element(by='xpath',
                                 value='//div[contains(@data-params, "Name")]//textarea | '
                                       '//div[contains(@data-params, "Name")]//input')
text_input.send_keys("Write your text here")

3.使用假数据,创建列表并填写所有字段。

还有其他python工具,例如faker,可以帮助我们生成虚假数据(我将向您展示Faker在最后是如何工作的),但是要保持简单,让我们自己在列表中构建数据,然后存储。它在字典中。

fields = ['Name', 'Email', 'Address', 'Phone number', 'Comments']
data = ['Frank', 'frank@example.com', '123 St', '987654321', 'Hello World']
my_form = dict(zip(fields, data))

要将这些数据填充到我们表格的所有字段中,我们在A内使用.find_element.send_keys函数用于循环。

for field, data in my_form.items():
    text_input = driver.find_element(by='xpath',
                                     value=f'//div[contains(@data-params, "{field}")]//textarea | '
                                           f'//div[contains(@data-params, "{field}")]//input')
    text_input.send_keys(data)

4.提交表格。

我们快要完成了。接下来,我们必须单击“ 提交”按钮。

text

使用硒,我们在使用.click方法之前检查按钮以生成其xpath,实际单击“ 提交”按钮。

submit_button = driver.find_element(by='xpath',
                                    value='//div[@role="button"]//span[text()="Submit"]')
submit_button.click()

注意:如果将浏览器设置为另一种语言,则text()属性内的值很可能是使用该语言的。例如,由于我的浏览器是西班牙语,所以我必须将xpath的一部分更改为//span[text()="Enviar"]

这是我们到目前为止写的代码。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time

path = '/Users/.../chromedriver'  # your path goes here
service = Service(executable_path=path)
website =  # your link goes here
driver = webdriver.Chrome(service=service)

fields = ['Name', 'Email', 'Address', 'Phone number', 'Comments']
data = ['Frank', 'frank@example.com', '123 St', '987654321', 'Hello World']
my_form = dict(zip(fields, data))

driver.get(website)
time.sleep(3)

for field, data in my_form.items():
    text_input = driver.find_element(by='xpath',
                                     value=f'//div[contains(@data-params, "{field}")]//textarea | '
                                           f'//div[contains(@data-params, "{field}")]//input')
    text_input.send_keys(data)

submit_button = driver.find_element(by='xpath', value='//div[@role="button"]//span[text()="Submit"]')
submit_button.click()

time.sleep(1)
driver.quit()

是的!恭喜,您现在了解如何使用ð自动填写Web表单。

现在,您可以通过提交数百个具有虚拟数据的表格来进一步迈出一步。

结论

既然您了解了基本原理,则可以跳到我下面的视频的13:26,以发现如何生成虚拟数据并与Python提交数百种形式。

有关更多信息和与数据自动化归档表的详细视频,请单击此处。

这就是今天的全部! ð

感谢您抽出宝贵的时间阅读本文!如果您喜欢这篇文章,请拍手(最多50次!),并在LinkedInMedium上与我联系,以使我的未来文章保持速度。 ð