如何从Perl发出HTTP GET请求?

时间:2009-10-12 20:29:50

标签: perl http

我正在尝试编写我的第一个Perl程序。如果您认为Perl对于手头的任务来说是一种糟糕的语言,请告诉我哪种语言可以更好地解决它。

该程序测试给定计算机和远程Apache服务器之间的连接。 首先,程序从Apache服务器请求目录列表,而不是解析列表并逐个下载所有文件。如果文件出现问题(连接在达到指定的Content-Length之前重置),则应记录此信息并检索下一个文件。无需保存文件甚至检查完整性,我只需要记录完成所需的时间以及连接重置的所有情况。

要从Apache生成的目录索引中检索链接列表,我计划使用类似于

的正则表达式
/href=\"([^\"]+)\"/

实际上,regexp尚未调试。

从Perl执行HTTP请求的“引用”方式是什么?我用Google搜索并找到了使用许多不同库的示例,其中一些是商业化的。我需要能够检测到断开连接(超时或TCP重置)并处理这些内容的东西。

另一个问题。当使用最少的编码工作全局搜索字符串列表时,如何存储我的正则表达式捕获的所有内容?

4 个答案:

答案 0 :(得分:10)

就整个问题描述而言,我会使用WWW::Mechanize。 Mechanize是LWP::UserAgent的子类,它添加了有状态行为和HTML解析。使用mech,您可以$mech->get($url_of_index_page),然后使用$mech->find_all_links(criteria)选择要关注的链接。

答案 1 :(得分:9)

你有很多问题。您帖子标题中的问题答案是使用LWP::Simple

大多数其他问题都会在perlfaq9中得到解答,并提供相应的指示信息。

答案 2 :(得分:4)

至于正则表达式的解析标记是你问题的一部分,请不要!

http://htmlparsing.icenine.ca解释了为什么不应该这样做的一些原因。虽然你似乎试图解析的东西看起来很简单,但使用适当的解析器。

上面链接的页面不再存在......

http://www.cwhitener.com/htmlparsing

答案 3 :(得分:3)

作为更一般的答案,Perl是用于执行HTTP请求的完美语言,就像许多其他语言一样。如果您熟悉Perl,请不要犹豫;有许多优秀的图书馆可以满足您的需求。

相关问题