【问题标题】:Controlling the mouse and browser with pyautogui for process automation使用 pyautogui 控制鼠标和浏览器以实现流程自动化
【发布时间】:2019-12-18 23:13:04
【问题描述】:

我是 Python 新手,我在工作中尝试完成的项目需要专家指导,因为我的同事都不是程序员。

我正在制作一个登录网站并提取 CSV 数据集的脚本。以下是我想自动化的步骤:

  1. 打开 chrome,访问网站
  2. 使用用户名/密码登录
  3. 通过下拉菜单导航到另一个内部站点
  4. 在搜索标签框中输入文本或删除搜索标签,例如“小时”,按“Enter”或“Tab”键选择(重复此操作可搜索 3-4 个搜索标签)
  5. 点击“运行数据”
  6. 等到数据加载完毕,然后点击“下载”以获取包含 40-50k 行数据的 CSV 文件
  7. 针对不同的数据拉取、不同的链接和不同的搜索标签重复此过程 3-4 次

这个过程通常需要 30-40 分钟,每周总共提取 4 或 5 次数据,因此就像看着油漆变干一样。

我尝试使用pyautogui 模块自动执行此操作,但它对我不起作用。它工作得太快,或者根本不起作用。我想我用错了。

这是我的代码:

import webbrowser
import pyautogui
#pyautogui.position()
#print(pyautogui.position())

#1-2
pyautogui.FAILSAFE = True
chrome_path = 'open -a /Applications/Google\ Chrome.app %s'

#2-12
url = 'http://Google.com/'
webbrowser.get(chrome_path).open(url)
pyautogui.moveTo(185, 87, duration=0.25)
pyautogui.click()
pyautogui.typewrite('www.linkedin.com')
pyautogui.press('enter')
#loginhere? Research

如果pyautogui 不适合这个任务,你能推荐一种替代方法吗?

【问题讨论】:

  • “太快了”是什么意思?这不是你想要的吗?
  • 我的意思是 Python 正在以快速的方式处理代码,因此代码需要在某些代码之间暂停以允许鼠标导航、单击等。Python 正在快速处理代码(速度是不是问题)问题是 - 浏览器没有在点击/移动等之间加载整个网站。我在我的 Mac 上运行了 8 gig 的 ram - 现在 16 - 所以谁知道这是否会有所作为。通常,我知道数据将使用 SQL/ACCESS 或 Excel ODBC 查询,但这些不是一个选项。所以我尝试使用 python 抓取数据。

标签: python automation webbrowser-control pyautogui


【解决方案1】:

您获取数据的方式很容易出错,而不是人们通常从网站获取数据的方式。您需要的是一个网络爬虫,它允许您从网站或某些公司提供的 API 中获取信息,让您更轻松地访问数据。

要从 LinkedIn 获取信息,它有一个 built in API。您确实提到您正在导航到另一个站点,但在这种情况下,我会查看该站点是否具有 API 或查看使用 Scrapy 的网络爬虫,它应该允许您提取所需的信息。

旁注:您还可以研究使用 python 进行同步和异步编程,以使多个请求更快/更容易

【讨论】:

  • 感谢您的回复!因为它是 hippa 数据——不幸的是,我无法直接从第三方数据仓库访问数据。即使公司生成数据,他们也无权访问它。有点愚蠢,所以这就是为什么公司总是以这种方式提取数据。我建议编写一个 SQL 查询来提取数据,但不允许。我已经使用 API 通过 Quandl 模块提取股票数据,但不确定第三方提供商是否允许这样做。你提到了网络爬虫——我在想 BeautifulSoup——我现在去看看 Scrapy。我一定会按照你的方式尝试。
猜你喜欢
  • 2021-09-28
  • 2013-08-23
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多