屏幕抓取:自动化vim脚本

时间:2012-01-16 22:31:51

标签: perl vim screen-scraping mechanize

在vim中,我将一系列网页(一次一个)加载到vim缓冲区(使用vim netrw插件),然后解析html(使用vim elinks插件)。都好。然后,我使用正则表达式编写了一系列vim脚本,最终结果为几千行,每行的格式正确(csv),以便上传到数据库。

为了做到这一点,我不得不使用vim的标记功能,这样我就可以遍历文档的特定点并将它重新组合成一个csv行。现在,我正在考虑使用Perl的“Mechanize”类库(UserAgent等)来实现自动化。

问题:

  1. vim能否“标记”文档的各个部分(以便 执行替换)在Perl中完成?
  2. 有人建议直接使用“elinks” - 我的意思是 使用ellinks将页面加载到无头浏览器中并执行Perl 来自那里的内容的脚本(?)
  3. 如果这是正确的,是否会出现部署问题 当我将网站从我的localhost LAMP堆栈设置迁移到时,elinks 像Bluehost这样的托管公司?
  4. 由于

    修改1:

    从VIM到PERL的移民知识:

    如果@flesk(下面)是正确的,那么我将如何执行此程序(用vim编写)在文本文件(“i”和“j”)中“标记”行,然后将其用作范围('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手册中看到这种功能。我错过了一个模块或一些基本的Perl对m /或qr / ??的理解

1 个答案:

答案 0 :(得分:0)

我确定您需要的是某种 HTML解析器。例如,我正在使用HTML::TreeBuilder::XPath