Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 如何利用VBA刮取整页源代码-单元格限制问题_Excel_Vba_Web Scraping - Fatal编程技术网

Excel 如何利用VBA刮取整页源代码-单元格限制问题

Excel 如何利用VBA刮取整页源代码-单元格限制问题,excel,vba,web-scraping,Excel,Vba,Web Scraping,我想使用VBA(没有任何其他工具)刮取整页源代码,并将其粘贴到excel中。然而,由于单元格的限制,大部分源代码丢失了 我正在使用下面的代码: Sub SCRAPE() Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") With IE .Visible = False .Navigate "https://www.ng-news.net/best-budge

我想使用VBA(没有任何其他工具)刮取整页源代码,并将其粘贴到excel中。然而,由于单元格的限制,大部分源代码丢失了

我正在使用下面的代码:

Sub SCRAPE()
Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Visible = False
        .Navigate "https://www.ng-news.net/best-budget-processor-for-super-budget-gaming-pc/"
                 Do While .Busy And .readyState <> 4: DoEvents: Loop
         Application.Wait Now + TimeValue("0:00:06")
       Sheets("Sheet1").Range("A1").Value = .document.body.outerHTML
        .Quit
    End With
End Sub
Sub-SCRAPE()
模糊的物体
设置IE=CreateObject(“InternetExplorer.Application”)
与IE
.Visible=False
.导航“https://www.ng-news.net/best-budget-processor-for-super-budget-gaming-pc/"
执行While.Busy和.readyState 4:DoEvents:Loop
应用程序。立即等待+时间值(“0:00:06”)
图纸(“Sheet1”)。范围(“A1”)。值=.document.body.outerHTML
退出
以
端接头
我曾考虑使用文本框而不是单元格,但我不知道是否(以及如何)可以设置文本框的值

另一个解决方案可能是预先设置定界,在粘贴后会对源代码进行划分,但它不起作用,因为代码中实际上没有“粘贴”方法

可能可以将源代码保存到txt文件而不是单元格中,但同样-我需要在最后将其放在excel中,因此单元格限制也会出现问题


你们能不能建议一些其他的解决方案,或者编辑上面的代码,这样我就可以得到完整的源代码

你是对的,由于单元格的限制,你不能这样做。为什么需要页面中的完整HTML?您可以访问
.document
对象,您可以使用该对象并从HTML中提取所需内容。如果您真的需要完整的HTML,我建议编写一个解析器来分解HTML,并让它将结果粘贴到
范围
而不是
单元格
中。我想要完整的源代码的原因是我需要b_hotel_id值(这里:1098427),但我不知道如何处理它。所以我想在粘贴到excel中之后,用更手动的方式提取数据。顺便说一句,你所说的“编写一个分解HTML的解析器,并让它将结果粘贴到一个范围而不是一个单元格”是什么意思?你不需要为此下载HTML。你是他们的一半。研究
GetElementByTagName
GetElementById
。它应该会引导您找到所需的内容我已经尝试过了,但是由于此元素在网站中不可见,因此我找不到适当的标记来引用此对象…您可以使用
GetElementsByTagName(“输入”)
。这将返回页面上的所有输入字段(即使它们是隐藏的)。然后,您可以循环遍历它们,直到找到一个以hotel_id为名称的元素,并捕获该元素的
值。有其他方法可以做到这一点,但可能值得首先使用
文档
来使用