当前位置: 首页 > 工具软件 > Mojolicious > 使用案例 >

Mojolicious学习笔记-2015-01-26

茹建茗
2023-12-01

Mojolicious的官方文档写的很简练,个人认为这个文档开发的时候,其设定的目标读者是有一定web开发经验的,但是对于没有什么Web开发经验的人来说读起来的确很困难。

我这几天总结下来的经验:

1. 要了解HTTP协议,这个可以读读博客园上小坦克写HTTP相关的文章,用来入门很不错。更深入的理解HTTP协议的话,就要看《HTTP权威指南》这本书了。

2. 要了解HTML DOM,没有这方面的知识,Mojo::UserAgent中CSS selector有关的内容和Mojo::DOM::CSS的文档看起来就一头雾水了。


这两天在写一个用 Mojo::UserAgent抓网页上表格中的数据,看Mojo::UserAgent的文档有点儿晕,看了Pertricks.com上brian d foy写的Extracting from HTML with Mojo::DOM这篇文章,明白了一下,后来通过用Smart::Comments (用Data::Dumper也一样)来把数据一次次dump出来,让后再查相应的文档,大致搞明白了文档中在说什么。

下面举个例子说明一下用   Mojo::UserAgent 获取从web 服务器返回的内容后如何获取其中一项的字符串。

假设web server返回的HTML文档中有如下的一行
<td><a href="/Apache-Htaccess-1.4.tar.gz">Apache-Htaccess-1.4</a></td>

可以用$dom->find('td > a')->map("text")->join->to_string 获取到 "Apache-Htaccess-1.4"这个字符串
解释:
这里的find是 Mojo::DOM中的方法,find里面的参数是  Mojo::DOM::CSS  中的CSS selector, 返回的结果是 Mojo::Collection  对象,这个对象里面装的是通过CSS selector筛选后抓取到的elements(每个element在这里是一个Mojo::DOM 对象)。
接下来的 mapMojo::Collection中的方法,括号里面的 text” 是Mojo::DOM中的方法,map之后得到的还是一个Mojo::Collection 对象,接着用Mojo::Collection中的join这个方法把这个对象转成Mojo::ByteStream对象,然后用Mojo::ByteStream中的to_string这个方法就可以获取到一个字符串了。

 类似资料: