0

我有该国每个 DOT # (Dept. of Trans.) 的列表。我想找出这些公司中每一个的保险生效日期。如果你去http://li-public.fmcsa.dot.gov --> "continue" --> 然后从下拉列表中选择 "carrier search" 并点击 "go" 它会带你到一个搜索表单 (这是进入此屏幕的唯一方法)。

从那里,您可以输入一个 DOT # X(以 61222 为例),它会将您带到另一个屏幕。单击“以 HTML 格式查看报告”,然后在底部您会看到“有效/未决保险”。我想从该页面中提取“生效日期”并将其粘贴在我已经知道的 DOT # X 旁边的电子表格中。

在我列表中的数千个 DOT # 中,并非所有人都会在此网站上提交文件,如果这有所作为的话。

这可以通过宏或 Excel Web 查询来完成吗?我知道我可能听起来像个新手,但如果我能得到任何帮助,我将不胜感激。

谢谢

4

2 回答 2

1

你能做到吗?坦率地说,即使您可以在电子表格进行处理时锁定电子表格。最后,您将如何处理中途的错误?

我不会在面向客户端的应用程序中这样做。这听起来更像是在服务器端应用程序中做的事情,它可以在更受控的环境中进行处理和收集信息。然后,您的 Excel 电子表格可以查询该应用程序并一举获取信息。错误处理要简单得多,而且您最终不会坐在那里盯着 Excel,为什么它可以通过数千个网站运行。它不是为了优雅地做到这一点而设计的。

你用什么写我描述的网络服务?好吧,这取决于您的喜好。我,我会用 Ruby on Rails 编写它,因为它可以轻松处理任务的抓取方面,也可以轻松报告数据。但它真的可以回归到你最喜欢编码的地方。

于 2013-03-08T04:24:24.937 回答
1

你绝对可以做到这一点;但是 Excel 并不是进行解析的最佳工具(尽管我已经做到了!人们说这是不可能的——它可以使用异步 Windows API 调用来完成;祝一切顺利......)

您要问的第一个问题是该站点是否是动态的。它是否即时产生结果?另一个问题是:它们的 URL 约定是否一致?(换句话说:您可以为结果添加书签并在不同的会话中返回它们,而无需做任何事情,只需登录该站点......)

如果站点是静态的或具有一致的 URL 查询机制(我们在 HTML 中说:Web 查询是“GET”而不是“POST”表单......),您可以使用面向解析器的良好语言,如 Python使用访问网页的库;谷歌中应该有很多例子。在您完成所有调试并且它可靠地工作之后(还测试它是否智能地报告您无法访问该站点的情况;为此暂时中断您的网络连接......),您可以从 Excel 宏外壳到Python 脚本。诀窍是 Excel 中的普通脱壳不会阻塞您的脱壳命令,而是异步运行。所以再次使用谷歌,你可以找到一个 Windows API 调用,你可以从 Excel 到 shell 同步到你的检索任务(如果你在它完成之前没有阻止它,

看到这个设计的重点了吗?模块化的。如果您的解析中存在错误,只需查看 CSV 就更容易确定。而且您正在利用专业化:您正在使用一种专为解析而设计的编程语言(Python,无论如何......);VBA 并不是真正的解析语言。

如果不是静态网页,而是需要创建唯一条目的动态网页,该怎么办?然后,除了使用来自 Excel 宏的 bizarro Windows API 调用之外,您还可以使用 Greasemonkey 或 C# 制作动态解析脚本。Greasemonkey 是 Firefox 的一个插件,可让您使用 Javascript 编写网站交互脚本。这是相当直观的。如果您采用这种方法,您可以在 Firefox 浏览器中为您配置了预定义的 Greasemonkey 脚本的页面提供外壳。同样,Greasemonkey 可以生成数据的文本文件,并且以后可以很容易地对其进行调试。我听到的另一个选择是 C#;我从来没有尝试过,因为它是微软特有的,但我看到很多商店都是这样做的。还有一个Java解析包叫HTMLunit,但我在尝试在网页上模拟 Javascript 事件时发现它坏了。您可以查看的其他 HTML 解析器是 Jerry 和 Cobra;还有一种叫做 Selenium 的新产品。我发现 Greasemonkey 是最可靠的,因为它使用实际的浏览器进行操作;然而,除了 Selenium 之外,这些其他产品都会对浏览器进行虚拟复制,但不幸的是,它们经常无法做到这一点。有些人甚至不费心去复制可能在网页上的 Javascript(这通常是网站页面呈现方式的肉和土豆!)这些其他产品对浏览器进行虚拟复制,但遗憾的是经常无法做到这一点。有些人甚至不费心去复制可能在网页上的 Javascript(这通常是网站页面呈现方式的肉和土豆!)这些其他产品对浏览器进行虚拟复制,但遗憾的是经常无法做到这一点。有些人甚至不费心去复制可能在网页上的 Javascript(这通常是网站页面呈现方式的肉和土豆!)

玩得开心。这是游泳池的最深处,但它会让你忙碌并获得报酬。

于 2013-03-08T22:43:39.660 回答