怎么用VBA或网络爬虫程序抓取网站数据VBA网抓常用方法
1、xmlhttp/winhttp法:
用xmlhttp/winhttp模拟向服务器发送请求php抓取网页数据vba , 接收服务器返回的数据 。
优点:效率高php抓取网页数据vba,基本无兼容性问题 。
缺点:需要借助如fiddler的工具来模拟http请求 。
2、IE/webbrowser法:
创建IE控件或webbrowser控件php抓取网页数据vba,结合htmlfile对象的方法和属性,模拟浏览器操作,获取浏览器页面的数据 。
优点:这个方法可以模拟大部分的浏览器操作 。所见即所得,浏览器能看到的数据就能用代码获取 。
缺点:各种弹窗相当烦人,兼容性也确实是个很伤脑筋的问题 。上传文件在IE里根本无法实现 。
3、QueryTables法:
【php抓取网页数据vba php获取网站html代码】因为它是excel自带,所以勉强也算是一种方法 。其实此法和xmlhttp类似,也是GET或POST方式发送请求,然后得到服务器的response返回到单元格内 。
优点:excel自带 , 可以通过录制宏得到代码,处理table很方便
。代码简短,适合快速获取一些存在于源代码的table里的数据 。
缺点:无法模拟referer等发包头
也可以利用采集工具进行采集网页端的数据,无需写代码 。
如何通过vba在excel 2007工作表里获取php网页内容?Excel界面操作:数据——导入外部数据——新建Web查询:在出现的界面地址栏输入网址,然后选择需要更新的数据范围——导入——选择数据放的单元格(必要时修改属性,如刷新频率等)——确定 。这样当网页数据变化时,Excel表格的数据就会同样改变 。如果不想数据同步,复制粘贴值到其他地方,然后删除工作表 。
如果非要用VBA,用录制宏稍作修改即可 。代码如下,详见附件 。
Sub Macro2()
Sheet1.Activate
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;", Destination:=Range("A1"))
.Name = "return_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = https://www.04ip.com/post/True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
vba如何抓取网页上的数据代码:
Private Sub CommandButton1_Click()
Dim IE As Object
Dim i As Integer
i = 1
'打开网页:创建一个IE对象,然后给一些属性赋值 。Visible是可见性,navigate是网页地址
Set IE = CreateObject('internetexplorer.application')
With IE
.Visible = True
.navigate ''
'等待网页完全加载
Do Until .ReadyState = 4
DoEvents
Loop
'拷贝汉字到网页文本框,然后点击转换按钮,并取出转换结果
Do While Sheets('sheet1').Cells(i 1, 1).Value''
'从IE.Document.all句柄中把页面上要使用的节点找出来 。这里的方法是:
.document.all('source').Value 给以source为ID的文本框赋值
.document.all.tags('img')(1).Click点击图片集合里的第二张图片
.document.all('to').Value取出以to为ID的文本框内容
.document.all('source').Value = https://www.04ip.com/post/Sheets('sheet1').Cells(i 1, 1).Value
.document.all.tags('img')(1).Click
推荐阅读
- 微信小程序快速开发平台,微信小程序开发平台简介
- 华为手机换屏了怎么查看,华为换屏怎么查询
- python爬虫爬取代码,python 爬取
- 用电视看电影怎么操作手机,如何用电视机看手机上的电视剧
- java热点代码 java热点代码分析
- mysql表名能用变量表示什么,mysql 表变量
- java能开发网站吗,java可以编写网站吗
- thinkphp前台传值,php传值给前端代码
- c语言变量映射函数 c语言映射编码讲解