Mojolicious学习笔记-2015-01-26

Mojo::UserAgent实战
本文分享了使用Mojolicious框架中的Mojo::UserAgent组件进行网页抓取的实际经验,特别是如何通过CSS选择器定位并提取特定HTML元素中的文本。

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这个方法就可以获取到一个字符串了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值