发表回复 
用 AutoHotKey 来编写抓取工具的一些思路和考虑-杂谈
2014-11-28, 13 : 34 (这个帖子最后修改于: 2014-11-28 14 : 39 by 江户川.)
用 AutoHotKey 来编写抓取工具的一些思路和考虑-杂谈
AutoHotKey 有一个从互联网下载文件的函数,这个函数应该是封装的标准 Windows API。其实我之前第一次看到就兴奋了,联想到 RegExMatch 函数,写一个抓取工具完全够用嘛。

GUI 部分使用 AutoHotKey 提供的标准控件,下载部分使用 UrlDownloadToFile 函数,解析部分使用 RegExMatch 函数以及大部分字符串管理的函数。

实际上解析 HTML 或 XHTML 又或者 SHTML 时,使用 Xpath 甚至说 CSS 选择器都比正则表达式要高效。我在官方论坛看到过有朋友通过 JavaScript 和 AutoHotKey 配合来用一些 JavaScript 的函数来获取指定元素或 ID 或类的内容,不过看的时候没用心、并且有点不知所云的感觉。就放下了,然而这不光是我看不懂。。重点是我 JavaScript 水平太差。。。

其实若 AutoHotKey 原本就提供解析 HTML 结构的函数的话,发展就不仅仅是现在的样子了。但从语言定位上,AutoHotKey 一直是倾向于热键这类的东西,关于 WEB 和一些文本处理、文件管理的地方并不太过于关心。

我一想到嵌套 HTML 网页,若用正则表达式解析就头痛!倒腾逻辑一直不是我的强项,并且这方面一直没有清晰地思路。这样想一下吧,分析嵌套标签一般具有选择性:

代码: (全选)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>AutoHotKey</title>
</head>
<body>
<div class="m_1">
<div id="match">
见贤思齐焉,见不贤而内自省也。
</div>
<div class="m_2">
见贤思齐焉,见不贤而内自省也。——论语
</div>
</div>
</body>
</html>
div 元素的嵌套在网页中的存在非常多,一旦生成的网页类名、ID 名有所更改或生成的网页嵌套复杂一点儿,解析就失败了!总之就我的看法,CSS 选择器最为便捷,JQuery 用的就是 CSS 选择器,羡慕的紧。

继而,我认为,抓取网页信息这种复杂的差事儿交给 Python 这种标准库自带 HTML 解析的语言去解决比较好!并且,Python 怎么说比 AutoHotKey 的扩展性要强得多!

不过为了锻炼自己迎难而上的能力,AutoHotKey 抓取网页这事儿我一定会在有生之年实现。若有人实现了我不会理会,虽然重复发明轮子实非义举,但把代码写一篇详细的解析文章的精力还是有的。

从一开始就觉着,把一个使用工具就能分割文本的活儿交给了 AutoHotKey 是不是有些固执呀,把 AutoHotKey 不擅长的文本处理扯出来有没有必要,这些都是应该思考的。

代码: (全选)
UrlDownloadToFile,http://ahk8.com/thread-4441-post-32866.html,Filename
FileRead,test,Filename
RegExMatch(test,"<title>[^>]*</title>",match)
FileAppend,% match,Filename_test
;这段代码会成功吗?我不知道。。。我没测试过。。。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢江户川
2014-11-29, 09 : 40
RE: 用 AutoHotKey 来编写抓取工具的一些思路和考虑-杂谈
解析部分,可参考我的两个库。
http://ahk8.com/thread-5562.html
http://ahk8.com/thread-5561.html
我就是用它俩来解析网页内容的。
可能不是最好的解决方法,不过嘛,挺实用的。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢兔子
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合