我正在试着做一个程序,在网页上搜索文本,然后在找到文本后将鼠标光标放在高亮显示的文本上。使用pyautogui可以吗?如果可以,怎么做。如果不可以,有没有其他的替代方法?
示例代码如下:
import webbrowser
import pyautogui
var = 'Filtered Questions'
webbrowser.open('https://stackexchange.com/')
time.sleep(2)
pyautogui.hotkey('ctrl', 'f')
pyautogui.typewrite(var)
#code to place mouse cursor to the occurrence of var
我不希望使用pyautogui.moveTo()或pyautogui.moveRel(),因为我在网站上搜索的文本不是静态的。当网页加载时,搜索文本的位置会发生变化。任何帮助都将不胜感激。
5条答案
按热度按时间6g8kf2rb1#
是的,您可以这样做,但是您还需要Tesseract(和Python模块pytesseract)用于文本识别,以及PIL用于截图。
然后执行以下步骤:
1.打开页面
1.打开并执行搜索(在pyautogui中使用ctrl + f)-视图更改为第一个结果
1.截图(带PIL)
1.将图像转换为文本和数据(与Tesseract),并找到文本和位置
1.使用pyautogui移动鼠标并单击它
下面是获取图像和相关数据所需的代码:
在
data
中,您可以找到移动鼠标并单击文本所需的所有信息。这种方法的缺点是OCR部分消耗资源,在较慢的机器上需要几秒钟的时间。
2sbarzqh2#
当您使用Chrome或Chromium作为浏览器时,使用ONLY pyautogui有一种更简单、更稳定的方法:
1.使用pyautogui执行Crtl + F
1.执行Ctrl + Enter以“单击”搜索结果/打开与结果相关的链接
对于其他浏览器,你必须弄清楚是否也存在键盘快捷键。
8iwquhpp3#
我在研究课题时偶然发现了这个问题,基本上答案是否定的。“要点:
1)Pyautogui有一个使用图片搜索的选项。使用这个选项,你可以截图所有你想要查找的文本,并保存为单独的文本文件,然后使用它来动态搜索,并移动鼠标到那里/单击/做任何你需要做的事情。然而,正如docs中所解释的,每次搜索需要1-2秒,这是相当不实用的。
2)在某些情况下,但并不总是这样,在网站上使用ctrl+f搜索文本时,结果会滚动到页面的中间(垂直)。然而,这依赖于一些关于文本搜索位置的重要暗示。如果文本在页面的顶部,你显然不能使用这种方法,就像文本在页面底部一样。
如果你想让点击自动化,并让链接有不同的名字,我的建议是解析源代码并人工点击链接,否则你最好使用blue prism这样的自动化套件。
cqoc49vn4#
pyautogui是用来控制鼠标和键盘以及自动化其他GUI应用程序的。如果你需要在网页上查找文本,你可以寻找更好的选项来抓取网页。例如:Selenium
41zrol4v5#
如果你是一个新手,正在寻找如何在屏幕上的任何地方找到一串文本,并在谷歌搜索中偶然发现了这个老问题,你可以使用我在自己的项目中使用过的以下代码片段(它将一串原始文本作为输入,如果在屏幕上找到文本,则返回坐标,如果没有,则返回None):
用法: