1

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

  1. 访问http://www.nov.com/careers/jobsearch.aspx
  2. 选择选项 - 每页 25 个作业
  3. 选择日期选项 - 今天
  4. 点击搜索职位
  5. 将结果存储在文件中(仅职位名称)

我环顾四周,发现 Selenium 是处理 .aspx 页面的最佳方式。

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

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

任何帮助/指导将不胜感激......谢谢!

4

2 回答 2

1

首先关于你遇到的错误,我应该说根据表达式NoSuchElementException和消息Unable to locate element,你为 web-driver 提供的选择器是错误的,web-driver 找不到元素。

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

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. 我建议您driver.find_element_by_id在所有情况下都使用元素具有 ID 属性。它更健壮。
  2. 代替result.text,您可以使用result.get_attribute("value")result.get_attribute("innerHTML")

这一切都在我脑海中浮现;但如果您发布您的代码,我们会看到它有什么问题,这会更好。此外,如果您给我一个指向该网站的新链接,那就太好了,这样我就可以在代码中添加更多细节;您当前的链接已损坏。

于 2013-10-07T14:23:15.143 回答
0

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

from selenium import webdriver
options = webdriver.FirefoxOptions()
options.add_argument('headless')
driver = webdriver.Firefox(options=options)
于 2017-12-17T13:42:16.983 回答