Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在“中连接和断开internet”;IE数据刮取“;via";VBA“;_Excel_Vba_Internet Explorer - Fatal编程技术网

Excel 在“中连接和断开internet”;IE数据刮取“;via";VBA“;

Excel 在“中连接和断开internet”;IE数据刮取“;via";VBA“;,excel,vba,internet-explorer,Excel,Vba,Internet Explorer,我正在从每秒钟都会更改的活动服务器页(ASP)中抓取数据。我需要加载网页,断开互联网(使数据静态和未触及),刮它,连接互联网,刷新网页等。。。 主要问题是: 当VBA单击过滤器按钮时,服务器刷新数据。我需要所有的数据(3个过滤器)一起在同一时间。数据随时间变化(时间范围数据),每次单击“我的过滤器”,服务器都会刷新数据。我需要在更改筛选器之前停止数据刷新。顺序如下: 单页加载 从服务器进行两次停止(或保持)数据刷新(例如,断开IE与internet的连接) 3次点击过滤器和数据抓取(在我的例子中

我正在从每秒钟都会更改的活动服务器页(ASP)中抓取数据。我需要加载网页,断开互联网(使数据静态和未触及),刮它,连接互联网,刷新网页等。。。 主要问题是: 当VBA单击过滤器按钮时,服务器刷新数据。我需要所有的数据(3个过滤器)一起在同一时间。数据随时间变化(时间范围数据),每次单击“我的过滤器”,服务器都会刷新数据。我需要在更改筛选器之前停止数据刷新。顺序如下: 单页加载 从服务器进行两次停止(或保持)数据刷新(例如,断开IE与internet的连接) 3次点击过滤器和数据抓取(在我的例子中:3次点击过滤) 4-从服务器启动数据刷新(例如,将IE连接到internet) 整个阶段的5环 *服务器会在每次单击过滤器时自动刷新数据* *断开互联网连接只是为了防止服务器刷新,以便在特定时间销毁所有数据* *点击一个过滤器需要5秒钟,这会延迟数据抓取时间框架* 我手动(通过关闭/打开笔记本电脑WiFi)尝试了这一顺序,并且效果良好。但我需要一个代码来自动完成

示例代码(在单击行中使用断点以查看过程):

" '宏1宏 ' 模糊的物体 作为整数的Dim x 设置IE=无 设置IE=CreateObject(“InternetExplorer.Application”) 与IE .Visible=True .导航(“”) Do While IE.Busy=True:DoEvents:Loop Do While IE.readystate 4:DoEvents:Loop 而IE.readystate=“complete”:DoEvents:Wend 以

'loop
IE.document.getElementsByClassName("TopIcon MwIcon MwQuery")(0).Click
IE.document.getElementById("FilterIndex").getElementsByTagName("div").Item(0).Click
x = 1
'data scraping LVL1 with first cache object
IE.document.getElementById("FilterIndex").getElementsByTagName("div").Item(0).Click
'data scraping LVL2 with second cache object
x = 2
IE.document.getElementById("FilterIndex").getElementsByTagName("div").Item(0).Click
'data scraping LVL3 with third cache object
x = 3
'loop
IE.Quit
" 端接头


提前谢谢

我不太明白你的问题是什么。你说的“断开互联网”是什么意思?这不能通过在再次加载页面之前将页面的XML/HTML缓存到字符串集合中来实现吗?可以在第一次单击第一个筛选器时实现,但在单击下一个筛选器后,服务器将刷新数据。包含缓存数据的过程分为3个步骤,并单击3个筛选器。因此,每次点击每个过滤器都会刷新缓存数据。很抱歉,我仍然不理解,并且我无法阅读您试图刮取的网站,因此我不太可能理解您问题的本质。您正在单击过滤器,但您希望页面内容不会更改?否。每次单击过滤器时内容都会更改(这是网页的性质)。我必须在三个单独的过滤器上单击三次,首先单击正确缓存数据,然后再单击第二个过滤器网页内容更改。我需要所有的“三步数据”在同一时刻。但在3个步骤中抓取数据需要3次点击3个过滤器,因此需要3次缓存。这是主要问题:当我更改筛选器时,我需要停止刷新数据(按服务器)。好的,那么您想同时应用所有三个筛选器,所以只缓存数据一次?顺便说一句:你应该编辑你的问题来澄清这一点,就像你在评论中所做的那样。不幸的是,由于我不能阅读该网站的语言,我不能对你有多大的帮助,但希望其他人可以帮助。
'loop
IE.document.getElementsByClassName("TopIcon MwIcon MwQuery")(0).Click
IE.document.getElementById("FilterIndex").getElementsByTagName("div").Item(0).Click
x = 1
'data scraping LVL1 with first cache object
IE.document.getElementById("FilterIndex").getElementsByTagName("div").Item(0).Click
'data scraping LVL2 with second cache object
x = 2
IE.document.getElementById("FilterIndex").getElementsByTagName("div").Item(0).Click
'data scraping LVL3 with third cache object
x = 3
'loop
IE.Quit