需要使用 Python 来填充一个 Flash(.swf)网站表单,具体来说,是 FedEx 网站上的运费和运送时间报价表单(www.fedex.com/ratefinder/… Chrome 开发者工具检查页面后,发现该表单是一个嵌入式的 SWF 。
目标是编写一个 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 是一种过时的技术,可能存在兼容性问题或其他挑战。