|
本帖最后由 roych 于 2014-12-24 15:51 编辑
前段时间在处理些网页抓取的问题,顺带发一个模块给大家。
说明:这里是使用了类名(Class)来抓取,返回字符串后,可以使用split函数切分为数组再写入表字段位置。
1、如需要多页抓取,则需要写循环,详见附件。
2、由于异步情况下,HTML元素返回值跟页面显示不一致,因此不支持ajax。
- '*******************************************************************************************************************
- '网页抓取数据主程序,获取包含以冒号隔开的某个类的网页元素标识的文本字符串。
- '编写:东东
- '日期:2014-11-18
- '使用说明:需引用HTML库和互联网控件库(Internet Control)。
- 'wb:WebBrowser组件,返回Object
- 'strURL:URL地址,字符串类型
- 'strClassName:类名称,字符串类型
- 'isID:是否获取宝贝ID,布尔值类型
- '如:myData(Me.Webbrowser0,"http://www.Tmall.com,"DIV",False)
- '*******************************************************************************************************************
- Function myData(ByVal wb As WebBrowser, ByVal strURL As String, ByVal strClassName As String, Optional ByVal isID As Boolean=False)
- Dim doc As HTMLDocument
- Dim eles As IHTMLElementCollection
- Dim ele As IHTMLElement
- Dim str As String
- wb.Navigate strURL
- Do Until wb.ReadyState = READYSTATE_COMPLETE
- DoEvents
- Loop
- Set doc = wb.Document
- Set eles = doc.getElementsByClassName(strClassName)
- For Each ele In eles
- If isID Then
- str = str & ":" & Right(ele.getAttribute("href"), 11)
- Else
- str = str & ":" & ele.innerText
- End If
- Next
- myData = str
- End Function
复制代码 ****************************************************
2014-12-24更新:应7楼的要求,以论坛帖子为数据源,附上实例。
****************************************************
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|