如何在 Python 中填充 .swf(Flash)网络表单?

125 阅读2分钟

需要使用 Python 来填充一个 Flash(.swf)网站表单,具体来说,是 FedEx 网站上的运费和运送时间报价表单(www.fedex.com/ratefinder/… Chrome 开发者工具检查页面后,发现该表单是一个嵌入式的 SWF 。

huake2_00017_.png 目标是编写一个 Python 脚本,可以自动填写该 Flash 表单、提交表单并捕获结果文本。登录用户先前已经编写过用于网络爬取、提交 POST 数据、处理安全会话的 Python 脚本,但从未涉及过 Flash 表单。

2、解决方案

虽然使用 Python 来填充 Flash 表单可能是一个挑战,但可以使用一些方法来实现。一种可能的解决方案是使用 Selenium WebDriver。Selenium WebDriver 是一个用于浏览器自动化的工具,它允许用户通过 Python 脚本与浏览器交互。

要使用 Selenium WebDriver 来填充 Flash 表单,需要遵循以下步骤:

1、安装 Selenium WebDriver。可以从 Selenium WebDriver 的官方网站下载适用于 Windows 7 的 Selenium WebDriver 版本。

2、导入 Selenium WebDriver 模块。在 Python 脚本中,可以导入 Selenium WebDriver 模块,如下所示:

from selenium import webdriver

3、创建 WebDriver 对象。可以通过调用 webdriver.Firefox()webdriver.Chrome() 等方法来创建 WebDriver 对象。例如,如果要使用 Firefox 浏览器,则可以使用以下代码:

driver = webdriver.Firefox()

4、导航到 FedEx 网站。可以使用 driver.get() 方法导航到 FedEx 网站,如下所示:

driver.get("https://www.fedex.com/ratefinder/home")

5、填充 Flash 表单。可以使用 driver.find_element_by_id()driver.find_element_by_name() 等方法查找 Flash 表单中的元素。找到元素后,可以使用 send_keys() 方法来填充元素。例如,如果要填写发件人地址,则可以使用以下代码:

address_element = driver.find_element_by_id("sender_address")
address_element.send_keys("123 Main Street")

6、提交 Flash 表单。可以使用 driver.find_element_by_id()driver.find_element_by_name() 等方法查找 Flash 表单中的提交按钮。找到提交按钮后,可以使用 click() 方法来提交表单。例如,如果要提交表单,则可以使用以下代码:

submit_button = driver.find_element_by_id("submit_button")
submit_button.click()

7、捕获结果文本。可以使用 driver.page_source 属性来获取网页的源代码。然后,可以使用正则表达式或 HTML 解析库来从源代码中提取结果文本。例如,如果要提取运费,则可以使用以下代码:

source = driver.page_source
pattern = r"Shipping cost: $([0-9.]+)"
match = re.search(pattern, source)
if match:
    shipping_cost = match.group(1)

8、关闭 WebDriver。在完成所有操作后,可以使用 driver.quit() 方法来关闭 WebDriver。例如,可以使用以下代码:

driver.quit()

通过使用 Selenium WebDriver,可以自动填充 Flash 表单、提交表单并捕获结果文本。这是一种实现目标的可能方法,但需要注意,Flash 是一种过时的技术,可能存在兼容性问题或其他挑战。