腾讯成分股:搜寻成分股是以网友在腾讯的搜寻量为统计数据数据此基础,以关键字为统计数据第一类,深入预测并排序出各关键字在腾讯页面搜寻中搜寻频度的平均数和。其在科学研究关键字搜寻态势、洞悉网友市场需求变动、监控新闻媒体财经态势、功能定位位数顾客特点各方面有关键的促进作用。

百度指数注册(百度指数注册查查指数蛙)-第1张

以后他们还讥讽腾讯成分股才是腾讯的良知之作!

假如想大批量以获取许多表头的腾讯成分股时,就牵涉统计数据数据以获取啦。

我查阅了许多数据资料,辨认出许多讲义在以获取腾讯搜寻成分股的这时候,采用的是食腐控制技术,透过预测允诺模块来以获取成分股关键信息。许多讲义明确提出了采用截屏展开,接着展开人脸识别,所以对要学那些控制技术的爸爸妈妈该是不是展开成分股的以获取呢?

本文将透过uiautomation来展开以获取,学好了这个控制技术你还可以对桌面系统展开自动化。

什么是uiautomation?

Microsoft UI 自动化是一个辅助功能框架,它使 Windows 应用程序能够提供和采用有关用户界面 (UI) 的编程关键信息。它提供对桌面上大多数 UI 元素的编程访问。它使辅助控制技术产品(例如屏幕阅读器)能够向最终用户提供有关 UI 的关键信息并透过标准输入以外的方式操作 UI。UI 自动化还允许自动化测试脚本与 UI 交互。

具体可以从以下链接中学习:

https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-overview?redirectedfrom=MSDN

当然了先安装:

pipinstall uiautomation

这个uiautomation库并不是官方的,而是一个作者自己封装的。感谢这位作者,大家可以从这个链接学习:

https://github.com/yinkaisheng/Python-UIAutomation-for-Windows/

浏览器的启动

由于他们是要基于UI来展开统计数据数据的以获取的,假如这个应用程序不是采用微软提供的标准控件来实现的就不能采用uiautomation,也就是说不支持UI框架应用程序是不能采用Uiautomation了,比如 Chrome和基于Electron开发的应用程序。但是也有解决办法:启动时添加模块--force-renderer-accessibility才能支持UIAutomation。

这里他们启动Chrome并在腾讯搜寻成分股网址:

所以如何找到这个搜寻框的位置和开始搜寻的按钮呢?

百度指数注册(百度指数注册查查指数蛙)-第2张

他们可以借助一个工具inspect.exe去寻找,双击这个程序之后,他们找到这个输入框:

百度指数注册(百度指数注册查查指数蛙)-第3张

借助inspect可以看出当前页面的程序控件关键信息,如上图可以看出,其Name为"请输入您想查阅的关键字",ControlType为UIA_EditControlTypeId,所以可以采用以下代码实现他们的功能了,代码中没有展开控件查找超时的异常处理,大家可以自己添加。

importsubprocessimportuiautomationasautodefshow_index_window():print(root Control:, auto.GetRootControl())
    chromePath ="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"url =rhttps://index.baidu.com/v2/index.html/parameter =--force-renderer-accessibilitystartmax =-start-maximizedrun_cmd = chromePath ++ url ++ parameter ++ startmax
    subprocess.Popen(run_cmd)
    mainWindow = auto.DocumentControl(ClassName=Chrome_RenderWidgetHostHWND)ifmainWindow.Name ==腾讯成分股:
        print(open success)输入"特斯拉"并点击"开始探索按钮"edit = auto.EditControl(mainWindow, Name=请输入您想查阅的关键字)try:
        edit.SendKeys(特斯拉)editConttol.GetPattern(auto.PatternId.ValuePattern).SetValue(特斯拉)exceptLookupErrorasex:return"find control time out "点击按钮time.sleep(1)textControl = auto.TextControl(mainWindow, Name=开始探索)try:
        print(textControl.Name)exceptLookupErrorasex:return"find control time out "rect = textControl.BoundingRectangle
    print(rect)
    left = rect.left
    top = rect.top
    right = rect.right
    bottom = rect.bottom展开点击作差取得控件中间位置也可auto.Click(left +10, top +10)

这样就自动进入到特斯拉腾讯成分股详情界面。

百度指数注册(百度指数注册查查指数蛙)-第4张

接下来他们就来提取其中的搜寻成分股位数关键信息。

提取成分股关键信息

透过inspect辨认出搜寻成分股关键信息的控件是图像类型的即,ControlType为ImageControl。因此打开开发者模式是无法提取到的。但是他们又需要里面的关键信息,他们这样来操作:

因为那些位数是透过悬浮窗口才显示的,我的做法是这样的:先运行程序:

pythonD:\Python\Python38\Scripts\automation.py-t8

接着切换到成分股界面,将鼠标移动图像曲线开始处的位置上比如2021-06-18那天的成分股统计数据数据(也不一定是曲线)显示成分股关键信息上图所示。接着可以在automation.py同一目录出现控件关键信息文件@AutomationLog.txt。在这个控件关键信息文件中他们找到目标:

百度指数注册(百度指数注册查查指数蛙)-第5张

可以看出,目标数值24653就显示出来了:

所以是不是将鼠标移动到开始的位置,很简单。先以获取控件接着以获取属性BoundingRectangle即可,跟上述点击开始探索按钮一样。这里留给读者自己实现。在不能直接以获取到目标控件的这时候,可以先以获取某一个元素,比如新闻头条等控件,接着以获取其父元素,在以获取子元素。

百度指数注册(百度指数注册查查指数蛙)-第6张

接下来他们就透过新闻头条控件来以获取目标关键信息:

代码如下:

-*- coding: utf-8 -*-importtimeimportuiautomationasautodefget_index_baidu():mainWindow = auto.PaneControl(ClassName=Chrome_WidgetWin_1)ifmainWindow.Exists(3,1):
        handle = mainWindow.NativeWindowHandleauto.SetWindowTopmost(handle, True)auto.SwitchToThisWindow(handle)auto.ShowWindow(handle, auto.SW.Maximize)
    news = auto.ListItemControl(mainWindow, Name =新闻头条)try:
        print(news:,news)editConttol.GetPattern(auto.PatternId.ValuePattern).SetValue(特斯拉)exceptLookupErrorasex:return"find control time out"以获取父元素f_new = news.GetParentControl()
    ff_new = f_new.GetParentControl()下一元素target = ff_new.GetNextSiblingControl()第一个子元素target_z = target.GetChildren()[0]等待元素加载"""
    这里调用鼠标移动到曲线上。
    假如想自动化,则需要以获取内置控件的关键信息,接着透过坐标来移动。
    """这里等待移动鼠标到曲线上time.sleep(2)
    f_target_z = target_z.GetChildren()[1]
    target_son = f_target_z.GetChildren()foreachintarget_son:
        text_control = each.GetChildren()[0]
        print(text_control.Name)

输出结果如下:

2021-07-08 星期四

特斯拉

105,777

成功以获取