ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: t13564865256

[分享] 本论坛首发,分享个网抓科技Selenium

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-9-25 11:09 | 显示全部楼层
本帖已被收录到知识树中,索引项:网页交互
t13564865256 发表于 2015-9-25 10:59
如果真的太浮躁就不要搞了。毕竟对你没啥用。仔细看看吧,他写代码比现在任何一种网抓都简单很多。

你倒是写个能具体抓到数据的例子啊~
打开个网页没啥难度啊~

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-9-25 11:13 | 显示全部楼层
coby001 发表于 2015-9-25 11:09
你倒是写个能具体抓到数据的例子啊~
打开个网页没啥难度啊~

我分享我内部网站的例子,你看了也没啥用啊,我也没有任何的参考资料,都用的VBA录制宏,然后就解决了。分享一段你看看吧。不需要学什么东西的
    Dim driver As New WebDriver
    Dim driver2 As New WebDriver
    Dim collection As WebElementCollection
    driver.Start "firefox", ThisWorkbook.Sheets(1).Cells(2, 1).Value
'    driver.setImplicitWait 5000
    driver.Open ThisWorkbook.Sheets(1).Cells(2, 1).Value
    driver.findElementByName("userId").Clear
    driver.findElementByName("userId").SendKeys ThisWorkbook.Sheets(1).Cells(6, 1).Value
    driver.findElementByName("password").Clear
    driver.findElementByName("password").SendKeys ThisWorkbook.Sheets(1).Cells(6, 2).Value
    driver.findElementByCssSelector("button.btn.btn-primary").Click
    Dim frameUrl: frameUrl = driver.findElementsByTagName("frame").Item(2).getAttribute("src")
    driver.get frameUrl
    driver.findElementsByName("CHOOSE_MODE")(ThisWorkbook.Sheets(1).Cells(7, 1)).Click
    driver.findElementByXPath("//input[@value='" & ThisWorkbook.Sheets(2).Cells(5, 1).Value & "']").Click
    frameUrl = driver.findElementsByTagName("frame").Item(2).getAttribute("src")
    driver.get frameUrl
    driver.findElementById("btn_listSet").Click
    driver.switchToWindow (1)
    driver.findElementById("FROM_DATE").Clear
    driver.findElementById("FROM_DATE").SendKeys ThisWorkbook.Sheets(1).Cells(5, 1).Value
    driver.findElementById("TO_DATE").Clear
    driver.findElementById("TO_DATE").SendKeys ThisWorkbook.Sheets(1).Cells(5, 2).Value
    driver.findElementByCssSelector("input.button.buttonXS").Click
    Set collection = driver.findElementsByTagName("td")
    For i = 0 To collection.Count - 1
        If collection.Item(i).Text = ThisWorkbook.Sheets(1).Cells(4, 1).Value Then
            collection.Item(i - 1).findElementByXPath("//input[@value='" & ThisWorkbook.Sheets(2).Cells(2, 1).Value & "']").Click
            driver.switchToAlert().accept
            Exit For
        End If
    Next i
    driver.Close
    driver.switchToWindow (0)
    driver.findElementById("btn_submit").Click
    driver.switchToAlert().accept
    driver.switchToWindow (1)
    driver.Close
    driver.stop
这段函数完成了内部网站相当复杂的操作,如果用IE去写 代码长度是他的3倍多。
这个技术国外很早就有了,国内只用于大型网站的测试,VBA代码生成功能去年刚出来的。
日本已经在用这个技术了。国人要进步啊

TA的精华主题

TA的得分主题

发表于 2015-9-25 11:39 | 显示全部楼层
t13564865256 发表于 2015-9-25 11:13
我分享我内部网站的例子,你看了也没啥用啊,我也没有任何的参考资料,都用的VBA录制宏,然后就解决了。 ...

嗯 还算可以~
那些代码只是在模拟操作网页元素,
要熟练得操纵这些东西,还是要熟悉 html + css

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-9-25 11:40 | 显示全部楼层
coby001 发表于 2015-9-25 11:39
嗯 还算可以~
那些代码只是在模拟操作网页元素,
要熟练得操纵这些东西,还是要熟悉 html + css

根本不需要,有录制宏功能。我只配合了一个谷歌的自动分析就解决了。我对网页根本不是很熟悉。网抓我也只是个菜鸟而已。

TA的精华主题

TA的得分主题

发表于 2015-9-25 11:41 | 显示全部楼层
coby001 发表于 2015-9-25 11:39
嗯 还算可以~
那些代码只是在模拟操作网页元素,
要熟练得操纵这些东西,还是要熟悉 html + css

如果可以通过 xmlhttp 直接获得web上的数据,何必啰里啰唆的模拟点击网页呢~

TA的精华主题

TA的得分主题

发表于 2015-9-25 11:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
对于刚刚接触这类操作的人来说,有代码参考,也是很好的。
这个工具其实和"录制宏"功能类似,对要用的人有用,对不需要用的人无用。
无所谓什么技术什么什么的……最近几年看论坛里总把什么网抓吹得上天,用这个用那个的……有点小奇怪:就那么几个对象,用哪个还不都是使用不同的对象方法一些不同?无非是同步或是异步,用哪个还不是看在什么时候用更合造?无非是单线程或是多线程,那也不是什么高深的东西,VBA天然有缺陷(多线程不兼容),那也是众所周知的,也没必要拿多线程来说事。

最近总看到坛子里不停的吵吵吵,有感而发,发泄一下而已,不针对任何人。
顺便提下:我现在还真是没搞明白坛友们总提的"网抓"是什么东西?一提到"网抓"总是让我想起谷歌,想起百度……

TA的精华主题

TA的得分主题

发表于 2015-9-25 11:44 | 显示全部楼层
百度不到去谷歌 发表于 2015-9-25 10:51
要使用这个组件 要做以下准备工作?
1、下载安装组件
2、安装火狐浏览器

支持那么多语言就是最大的优势了

TA的精华主题

TA的得分主题

发表于 2015-9-25 11:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
t13564865256 发表于 2015-9-24 16:42
测试过一个非常复杂的内部网站操作和网抓,全部用这个完成。而且速度很快,代码简洁。不然我也不会发了。 ...

你可以把这个例子发上来让大家学习,看看代码的特点

TA的精华主题

TA的得分主题

发表于 2015-9-25 11:47 | 显示全部楼层
t13564865256 发表于 2015-9-25 11:40
根本不需要,有录制宏功能。我只配合了一个谷歌的自动分析就解决了。我对网页根本不是很熟悉。网抓我也只 ...

我说的是 熟练,
你录制了那么长的代码,却不知简化,说明还不够熟练~

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-9-25 11:50 | 显示全部楼层
coby001 发表于 2015-9-25 11:47
我说的是 熟练,
你录制了那么长的代码,却不知简化,说明还不够熟练~

录制出来的代码当然不可能是这样的。不只要简化,还要做很多调试。网抓不都这样吗,哪里有一次成功的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 16:34 , Processed in 0.042015 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表