Python - 在.aspx网站上自动化表单输入并将输出存储在文件中(使用Selenium?)

时间:2013-03-30 06:14:38

标签: python forms selenium

本月我刚刚开始学习编码,并从Python开始。我想自动化一个简单的任务(我的第一个项目) - 访问公司的职业网站,检索当天发布的所有工作并将它们存储在一个文件中。所以这就是我想按顺序做的事情:

  1. 转到http://www.nov.com/careers/jobsearch.aspx
  2. 选择选项 - 每页25个作业
  3. 选择日期选项 - 今天
  4. 点击搜索工作
  5. 将结果存储在一个文件中(只是作业标题)
  6. 我环顾四周,发现Selenium是处理.aspx页面的最佳方式。

    我已经使用Selenium完成了步骤1-4。但是,有两个问题:

    1. 我不希望浏览器打开。我只需要将输出保存到文件中。
    2. 即使我对浏览器弹出也没问题,在IDLE(我有Windows操作系统)上使用Python代码(从Selenium导出为Web驱动程序)会导致错误。当我运行Python代码时,浏览器打开并加载链接。但是没有一个表单选择发生,我在浏览器关闭之前收到了foll错误消息(链接如下)。那么错误信息意味着什么? http://i.stack.imgur.com/lmcDz.png
    3. 任何帮助/指导将不胜感激......谢谢!

2 个答案:

答案 0 :(得分:1)

首先说明你遇到的错误,我应该说根据表达式NoSuchElementException和消息Unable to locate element,你为网络驱动程序提供的选择器是错误的,网络驱动程序可以找不到元素。

好吧,既然你没有发布你的代码而且我无法打开你输入的网站的链接,我可以给你一个示例代码,我会尽可能详细地计算。

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("url")
number_option = driver.find_element_by_id("id_for_25_option_indicator")
number_option.click()
date_option = driver.find_element_by_id("id_for_today_option_indicator")
date_option.click()
search_button = driver.find_element_by_id("id_for_search_button")
search_button.click()
all_results = driver.find_elements_by_xpath("some_xpath_that_is_common_between_all_job_results")

result_file = open("result_file.txt", "w")

for result in all_results:
    result_file.write(result.text + "\n")

driver.close()
result_file.close()

既然你刚开始学习编码,我想我必须给出一些解释:

  1. 我建议您在元素具有ID属性的所有情况下使用driver.find_element_by_id。它更健壮。
  2. 您可以使用result.textresult.get_attribute("value")代替result.get_attribute("innerHTML")
  3. 现在这一切都进入了我的脑海;但是如果你发布你的代码并且我们看到它有什么问题,那就更好了。另外,如果你给我一个新的网站链接会很棒,所以我可以在代码中添加更多细节;您当前的链接已损坏。

答案 1 :(得分:0)

关于第一个问题,您可以简单地使用无头浏览器。这可以通过Chrome和Firefox实现。 在这里查看Gray Li的答案,例如:Python - Firefox Headless

from selenium import webdriver
options = webdriver.FirefoxOptions()
options.add_argument('headless')
driver = webdriver.Firefox(options=options)