Tag: web scraping

VBA从网站刮取数据 – 空数据错误

我正在创build一个macros来从网站上抓取数据。 我遇到的问题是当最后一个完整的页面被刮,列A没有数据,但其他列做,我收到一个运行时间1004错误。 例如,如果要刮取的总页数是6,并且列A在第5页上的最后一个条目中没有数据,则macros将擦除第5页上的所有数据,但是在尝试获取时会抛出运行时错误到第6页。第6页也有数据,但是我认为,因为A列中没有数据,所以它只是决定给出运行时间错误。 任何想法呢? 另外,用我所包含的代码,直到下一个箭头消失,macros观循环会更容易吗? 如果是这样,我怎么会这样做呢? 'Macro to query Daily Activity Search for DFB Counties 'Run Monday to pull data from Friday Sub queryActivityDailyMforFWorking() Dim nextrow As Integer, i As Integer Dim dates dates = Date – 3 Application.ScreenUpdating = False Application.DisplayStatusBar = True Do While i <= 50 Application.StatusBar = "Processing Page " & […]

网站数据表刮刀

在问我的问题之前,我是一个业余编码器,基本上没有任何有意义的经验超越VBA在MS Office应用程序(我知道 – noob!) 我试图创build一个使用VBA将数据导入到Excel中的网页抓取工具,并根据我在下面的代码摘录中的评论,我已经能够find的最好的是在这个问题的胜利答案。 下面,我以investing.com为例,但实际上我的项目将跨越多个站点,并将投入到每天都会更新的matrix中,并且在事件到期时自我纵容 – 为此,我宁愿在前面代码方面的工作量尽可能小(对我来说)。 考虑到这一点,我可以问一下,是否有办法做到以下任何一种情况(支撑一下自己,这对于一些人来说是一种值得畏缩的基本知识): 有没有一种方法,我可以导航到一个url,并在该网页上的每个表上运行一个循环(没有任何已知的ID)? 这是为了加快我的代码,尽量减less我的input,因为会有相当多的数据被更新,我打算在刷新上放置一个2分钟的循环触发器。 而不是做我在下面做的事情,是可以引用一个表而不是一行,并沿着单元格行(2,5).value行来返回第1行第4列的值? (假设在两个维度上,数组索引都是从0开始的)?除此之外,我的第一列(在某些方面,我的主键)在所有的数据源上可能不是相同的顺序,所以有办法我可以做Columns("A:A").Find(What:=[Primary key], After:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True, SearchFormat:=False).Rowfind表内的哪一行与我要找的内容有关? 代码: Sub Scraper() Dim appIE, allRowOfData As Object ' As per https://stackoverflow.com/questions/27066963/scraping-data-from-website-using-vba Set appIE = CreateObject("internetexplorer.application") With appIE .Navigate "http://uk.investing.com/rates-bonds/financial-futures" 'Sample page .Visible = False End With Do While appIE.Busy Application.Wait (Now + […]

使用VBA将抓取的HTML数据格式化为excel将无法正确显示

我正在研究一个VBA脚本,而且我被困在应该很容易的东西上。 无论如何,VBA代码从sheet1中获取一个成员编号,打开一个经过validation的IE窗口,popup一个成员编号,从HTML页面中删除某些表并将它们插入到工作表2中。然后,它将转到Sheet1中的下一个成员编号。 但是我正在努力把刮取的数据转换成sheet2。 当我运行代码时,一切都按照计划进行,除了每次都将所有内容插入到sheet2中的相同位置。 所以当代码完成的时候,我得到的是来自sheet1上最后一个成员的数据。 Option Explicit Sub TableExample() Dim IE As Object Dim doc As Object Dim strURL As String Dim hicN As String strURL = "exampleURL.com" Set IE = CreateObject("InternetExplorer.Application") With IE .Visible = True .navigate strURL Do Until .ReadyState = 4: DoEvents: Loop Do While .Busy: DoEvents: Loop Set doc = IE.Document […]

如何从下表中格式化VBA中的数据

我试图从这个网页的首页到结束内容的所有表 使用下面的代码,我可以刮第1页的表格内容,但我不知道如何修改代码来获取从首页到结束的数据。 Option Explicit Sub NBAStats() Dim IE As Object, obj As Object Dim r As Integer, c As Integer, t As Integer Dim elemCollection As Object Set IE = CreateObject("InternetExplorer.Application") With IE .Visible = True .navigate ("http://stats.nba.com/league/player/#!/") While IE.ReadyState <> 4 DoEvents Wend Do While IE.busy: DoEvents: Loop ThisWorkbook.Sheet1.Clear Set elemCollection = IE.Document.getElementsByTagName("TABLE") For […]

VBA数据从网站上刮去

document.getElementsByTagName(“tr”)。当我执行VBA脚本来查找特定网页上tr元素的数量时,length返回零 Sub AutomaticMode() Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.Navigate "https://www.example.com/" Do While IE.readyState < 4 Application.StatusBar = "DOM Loading …" Loop Set username_field = IE.document.getElementByID("username") username_field.Value = "username" Set password_field = IE.document.getElementByID("password") password_field.Value = "password" SendKeys "{Tab}{Enter}" Do While IE.readyState < 4 Application.StatusBar = "DOM Loading …" Loop Dim trList As IHTMLElementCollection Set […]

VBA对象variables或块variables未设置错误 – 网页抓取

所以我写了一些VBA代码来通过一个网站,我不断收到一个“对象variables或块variables没有设置错误”我通常可以通过代码没有错误,这导致我相信这是一个时间问题。 我用等待语句加载了这个代码,仍然会得到这个错误。 有什么想法吗? 我在做一些疯狂的事情吗? Sub Do_Work_Son() Dim IE As InternetExplorer Dim doc As HTMLDocument Dim plnSelect As HTMLSelectElement 'this selects the plan Dim adrInput As HTMLInputElement 'this selects the address Dim dirSelect As HTMLSelectElement 'this selects the distance Dim strSQL As String Dim LString As String Dim LArray() As String strSQL = "http://avmed.prismisp.com/?tab=doctor" Set IE […]

Excel VBA – 对象不支持此属性或方法

我想从页面获取数据,但我得到错误“对象不支持此属性或方法”,当我试图获得标题 页面的来源是 <div class="title"> <span title="Naviforce Men's Black Dial Leather Band Watch – NF9055-BKRD">Naviforce Men's Black Dial Leather Band Watch – NF9055-BKRD</span> </div> 我的vba代码是 title = Trim(Doc.getElementsByClass("title").innerText) ActiveCell.Offset(0, 1).Value = title 我已经添加了两个“微软HTML对象库”和“微软互联网控件” 提前致谢

如何search整个网站的关键字

我想知道整个网站是否存在某个关键字。 我该怎么做? 用这种方式快速提示用户 “使用Googlesearch101) 只需input您的search字词,然后点击网站:www.website.com 但是我不确定如何testing它是正面的还是负面的。 谁能帮忙?

VBA网刮刀到一张纸上

我已经能够logging一个macros,并编辑它相当多。 它现在已经被设置为从网页(在链接上find)的特定数据,并显示在不同的页面上 – 我的问题是,现在我想要使用数据(VLOOKUP),但所有的数据是在不同的网页上,这使得它很难得到一个准确的公式。 如果有人可以请帮我编辑/指出我正确的方向进行更改 – 每个星期我都会把代码的第二行“”换成x = 1到20“换成”换x = 21再换成…“(例如) – 这样做是因为新的链接/数据每周都会出来 所以我不知道如何找出最后一行,并在下面添加下一批数据 Sub Update() For x = 1 To 20 Worksheets("Links").Select Worksheets("Links").Activate mystr = Cells(x, 8) mystr2 = Cells(x, 15) Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = x With ActiveSheet.QueryTables.Add(Connection:=mystr, Destination:=Range("$K$1")) .Name = "report2_1" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = […]

VBA:下载多个文件所需的更好的解决scheme

我正在使用代码从网站下载csv文件。 起初,我尝试了创buildInternetExplorer.Application等等的传统方法。这是最慢的方法。 后来我想通了selenium Wrapper的使用和创build下面的代码: 'Option Explicit Sub ScripHistoryDownloader() Flag5 = 0 Dim selDriver As Object Dim URL As String, Scripcode As String Dim StartDate As String, EndDate As String Dim ScripHistPATH As String, DownloadedScripHistFILE As String, ScripHistFILE As String ScripHistPATH = "R:\DataStore\003__ScripHistory\" Scripcodez = "500010" ScripHistFILE = ScripHistPATH & Scripcodez & ".csv" StartDate = "01/01/1990" […]