【发布时间】:2012-02-11 19:39:24
【问题描述】:
在 vim 中,我将一系列网页(一次一个)加载到 vim 缓冲区(使用 vim netrw 插件),然后解析 html(使用 vim elinks 插件)。都好。然后,我使用正则表达式编写了一系列 vim 脚本,最终结果为几千行,其中每一行都被正确格式化(csv)以上传到数据库。
为了做到这一点,我必须使用 vim 的标记功能,以便我可以遍历文档的特定点并将其重新组合成一个 csv 行。现在,我正在考虑通过使用 Perl 的“Mechanize”类库(UserAgent 等)来实现自动化。
问题:
- vim 能否“标记”文档的各个部分(以便 执行替换)在 Perl 中完成?
- 建议直接使用“elinks”——我认为这意味着 使用 ellink 将页面加载到无头浏览器中并执行 Perl 内容上的脚本(?)
- 如果正确,是否会出现部署问题 当我将站点从我的本地主机 LAMP 堆栈设置迁移到 像 Bluehost 这样的托管公司?
谢谢
编辑 1:
将知识从 VIM 迁移到 PERL:
如果@flesk(下)是正确的,那么我将如何执行这个例程(用 vim 编写)“标记”文本文件中的行(“i”和“j”),然后将其用作range ('i,'j) 执行最后两次替换?
:g/^\s*\h/d|let@"=substitute(@"[:-2],'\s\+and\s\+',',','')|ki|/\n\s*\h\|\%$/kj|
\ 'i,'js/^\s*\(\d\+\)\s\+-\s\+The/\=@".','.submatch(1).','/|'i,'js/\s\+//g
我在 perldoc perlre 手册中没有看到此功能。我是否缺少模块或对 m/ 或 qr/ 的一些基本 Perl 理解?
【问题讨论】:
-
根本不需要使用elinks。 Perl 可以轻松完成您描述的所有事情,而且由于您不需要任何核心模块,因此您应该能够将其迁移到任何支持 Perl 的主机。
-
如何将整个数据(经过上述转换)转换为单个 CSV 文件(可选用特殊行分隔不同部分,例如空),然后将其加载到 Perl 中进行操作?
标签: perl vim screen-scraping mechanize