再谈QT模拟点击<a>标签
来源:互联网 发布:zol买手机 知乎 编辑:程序博客网 时间:2024/06/07 20:31
最近公司要求做一个信息搜集工具,在百度地图输入学校名称, 然后把左侧列出的所有学校的名称, 电话, 地址, 保存在一个excel文件里面。如果只有几条数据就能不用点击下一页, 而当搜过列出成千上万条数据时,就需要一页一页地点, 然后,返回每一页的网页数据文本, 通过正则表达式和字符串分割,把对应的学校名称,电话,地址再保存在execel里面。 当有成千上万数据时 ,人工去点,将是一个很大的数据量, 这时,就需要电脑模拟点击“下一页”按钮, 通过分析网页的html文本发现,刚好有一条语句,是网页上显示点击下一页的地方:
<a href="javascript:void(0)" tid="toNextPage" onclick="Instance('TANGRAM_478').toPage(7);return false;">下一页></a>
可以看到,这是一个<a>标签, javascript:void(0) 有一个防止网页跳转函数, onclick事件, 是跳转到第7页, 说明目前正在第6页。
由此用到了QT的模拟点击<a>标签功能。
直接上代码吧:
QWebFrame *webFrame = ui->findWebView->page()->mainFrame();
QWebElement button = webFrame->documentElement().findFirst("a[tid=toNextPage]");
button.evaluateJavaScript("this.click()");
一定要注意那"this.click()" ,如果没有那this这段代码运行不出效果的。
findFirst("a[tid=toNextPage]"); 这里可以看到, 标签类型[一个有关它的属性 = 对应的值(这里没用引号)];
最后发出一个点的事件出去, 就实现了网页的模拟点击。
当然, 在我这个项目中, 自己点击后,有一个加载网页的过程, 这时就需要一个定时器, 不然,太快,效果不太好。我定为的一秒执行一次:
QTimer::singleShot(1000, this, SLOT(slotNextPage()));
void Widget::slotNextPage()
{
QWebFrame *webFrame = ui->findWebView->page()->mainFrame();
QWebElement button = webFrame->documentElement().findFirst("a[tid=toNextPage]");
button.evaluateJavaScript("this.click()");
}
- 再谈QT模拟点击<a>标签
- jquer 模拟点击a标签
- js模拟点击a标签,触发href
- 2014.04.04实现 模拟a标签的点击事件
- 使用jQuery 模拟鼠标点击a标签事件 实现定位
- 使用jQuery模拟鼠标点击a标签事件
- JQuery中模拟点击<a>标签,实现页面跳转
- 使用jQuery模拟鼠标点击a标签事件
- js模拟a标签点击在新窗口打开
- QT 模拟点击网页
- Qt 模拟鼠标点击
- jsp 模拟按钮,点击button,链接到a标签,是a标签的地址跳转
- <a>标签点击事件
- qt中点击标签响应
- 使用JS或jQuery模拟鼠标点击a标签事件代码
- 使用JS或jQuery模拟鼠标点击a标签事件代码
- jquery click()方法模拟点击事件对a标签不生效的解决办法
- jquery 模拟点击 a 连接
- 如何删除xcode项目中不再使用的图片资源
- 机器学习工具
- Python中sorted()方法的用法
- Android学习笔记:自定义实现流式布局
- 3d 学习
- 再谈QT模拟点击<a>标签
- cloudera manager good document
- AWS之S3实践
- 【SSH 基础】SSH框架--struts深入详解(二)
- 手机号段分配规则
- 一线触摸屏tslib的移植
- laravel系列5-- 中间件
- RecyclerView中显示不同的item
- 了解硬盘