如今,每个人都想要您的数据,因此,如果您想打开一个新帐户,输入促销或获得免费的电子书,则必须填写一份信息。
,如果您只使用一次,这并不是一个大问题,但是如果您必须经常重复相同的过程,则它会变得单调,因此,理想的答案是用 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。
确保您复制链接。
如果链接断开或停止工作,请使用下面的模板使用自己的链接创建自己的表单。
注意:如果您创建自己的表格,请确保取消选中或关闭 “ 限制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 ”。
此选项可在所有最近的Web浏览器中使用。它将打开开发人员工具窗口屏幕右侧。
您看到的是网站的HTML内容。
无论您在计算机上突出显示的元素如何,我们都会使用带有data-params
属性名称的元素,因为它包含字段名称(例如,名称,电子邮件,地址,地址,电话号码,注释),我们正在寻找的taht for。
现在,让我们为“ name ”字段创建XPath。 XPath的语法如下:
此外,我们将使用contains()
函数,因此我们的xpath将是:
//div[contains(@data-params, "Name")]
我们现在必须检查占位符“ 您的答案”的领域。
与其他网站不同,Google表单保持不一致的模式,其中某些字段(例如“ email ”)具有<input>
标签,但其他字段,例如“ address ”, “有<textarea>
标签。
带有“ 您的答案”的领域的最终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.提交表格。
我们快要完成了。接下来,我们必须单击“ 提交”按钮。
使用硒,我们在使用.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次!),并在LinkedIn和Medium上与我联系,以使我的未来文章保持速度。 ð