vba数据抓取屏幕数据
完美的Internet可以按照客户选择的格式(无论是CSV,XML,JSON等)向客户提供数据。真正的Internet有时会通过提供数据来取笑,但通常以HTML或PDF文档格式提供,而这些格式旨在显示数据比数据交换。 因此,昨天的屏幕抓取 (提取显示的数据并将其转换为请求的格式)在今天仍然很重要。
Perl具有出色的屏幕抓取工具,其中包括以下Scraping程序中描述的HTML::TableExtract
包。
刮刮程序概述
屏幕抓取程序有两个主要部分,它们组成如下:
- 文件data.html包含要抓取的数据。 此示例中的数据源自正在装修的大学场所,该数据解决了与大学学位相关的收入是否证明该学位成本合理的问题。 数据包括中位数收入,百分位数,以及其他有关研究领域的信息,例如计算机,工程学和文科。 要运行Scraping程序,data.html文件应托管在Web服务器上(在我的情况下是本地Nginx服务器)。 一个独立的Perl Web服务器,例如
HTTP::Server::PSGI
或HTTP::Server::Simple
也可以。 - 文件scrape.pl包含Scraping程序,该程序使用
Plack/PSGI
软件包(尤其是Plack Web服务器)中的功能。 从命令行启动Scraping程序(如下所述)。 用户在浏览器中输入Plack服务器的URL(localhost:5000/
),将发生以下情况:- 浏览器连接到Plack服务器(
HTTP::Server::PSGI
的实例),并向Scraping程序发出GET请求。 URL末尾的单斜杠(/
)标识此程序。 (即使用户没有这样做,现代的浏览器也会添加斜杠。) - 然后,Scraping程序对data.html文档发出GET请求。 如果请求成功,则应用程序使用
HTML::TableExtract
包从文档中提取相关数据,将提取的数据保存到文件中,并采取一些基本的统计措施来表示处理提取的数据。 如下所示HTML报告将返回到用户的浏览器。
- 浏览器连接到Plack服务器(
从用户浏览器到Plack服务器,再到托管data.html文档的服务器(例如Nginx)的请求流量可以描述如下:
GET localhost:5000/ GET localhost:80/data.html
user's browser------------------->Plack server-------------------------->Nginx
最后一步仅涉及Plack服务器和用户的浏览器:
reportFinal.html
Plack server------------------>user's browser
上面的图1显示了最终报告文件。
刮刮程序详细
可从我的网站以包含自述文件的ZIP文件的形式获得源代码和数据文件(data.html)。 以下是各部分的简要摘要,下面将进行说明:
data.html ## data source to be hosted by a web server
scrape.pl ## main source code, run with the plackup utility (see below)