SWI-Prolog如何解析HTML页面?
来源:互联网 发布:域名不备案会怎么样 编辑:程序博客网 时间:2024/06/14 05:19
http://www.swi-prolog.org/howto/scrape/ParseHTML.html
这可能是一个比你预期更复杂的事。首先,你不想处理HTML文本页面。没有将HTML事先翻译成一个数据结构的HTML文本解析,必然对各种不同方式创建的页面敏感。但是,我们发现HTML往往是无效的。更糟的是,事实上有时是XHTML,当文档要声明成XHTM通常包含HTML的功能,如缺少近距离标签,使用大写字母,等等。
SWI-Prolog的SGML/SML的解析器可以产生的结果,往往是抓取不够好。最好的选择集的文件的性质取决于一点点。显著不同的编码或使用严格和正确的XML网站可能会要求不同的选项。下面是一些代码作为一个开始。它静静地忽略所有的错误。这往往是你想要真正的抓取,但观看的消息可能会有所帮助的,如果你得到奇怪的输出。
http_load_html(URL, DOM) :- setup_call_cleanup(http_open(URL, In, [ timeout(60) ]), ( dtd(html, DTD), load_structure(stream(In), DOM, [ dtd(DTD), dialect(sgml), shorttag(false), max_errors(-1), syntax_errors(quiet) ]) ), close(In)).
请注意,打开连接使用setup_call_cleanup/3保证最终将被关闭。然而,它不会停止的例外和错误是正常的处理Web文件的一部分。通常,抓取将使用一个控制结构如下处理一个URL,不理它,如果它是不可能从URL检索数据。请注意,我们给出的例子,而不是库代码,因为实际抓取的要求,可以有很大的差异。例如,它可能是不可接受的放弃,如果有一个错误,你可能要等待和重试,或你的决定可能取决于错误返回,等等。
scrape_no_error(URL) :- catch(http_load_html(URL, DOM), Error, ( print_message(warning, Error), fail )), !, process_dom(DOM).scrape_no_error(_).
另请参阅
- http_open/3开放web页。如果您需要处理cookie,SWI-Prolog的5.10.3/5.11.16提供库(HTTP /http_cookie)。
- setup_call_cleanup/ 3是你的朋友,以避免失去文件的失败或错误的情况下处理。
- load_structure/ 3的进程有更多的选择。
- SWI-Prolog如何解析HTML页面?
- Installing and running SWI Prolog(如何安装运行swi-prolog)
- Swi-Prolog 数值约束
- Swi-Prolog 数值约束
- 从GNU Prolog转换到SWI Prolog
- 《SWI-Prolog参考手册》---进行中
- using swi-prolog jpl in eclipse vista64
- SWI-prolog工具开发小案例
- Swi-Prolog学习笔记(入门篇)
- swi plog 使用 learn prolog now的学习
- Prolog Brainfuck 解析器
- 解析远端html页面
- HTML页面元素解析
- struts2返回到JSP页面的html字符串如何在JSP页面上解析成html标签
- struts2返回到JSP页面的html字符串如何在JSP页面上解析成html标签
- struts2返回到JSP页面的html字符串如何在JSP页面上解析成html标签
- struts2返回到JSP页面的html字符串如何在JSP页面上解析成html标签 (ognl表达式)
- 解析html页面的选择
- Ubuntu安装windows字体
- extjs的grid控件如何根据值来设置某行的背景颜色
- 【iphone应用开发】iphone应用开发之十:发送短信/邮件/打电话
- jquery attr()方法
- Hibernate N+1 问题
- SWI-Prolog如何解析HTML页面?
- 桌面右键加入“用管理员权限运行命令行”DOS
- 华章IT图书书讯(2011年第11期)
- ubuntu10.04+hadoop0.20.2平台配置(完全分布式模式)
- 工作中碰到netcat的一个问题
- java发送邮件,正文图片,附件
- Linux下网络安全开发包之libpcap安装全过程
- [收集]计算程序的运行时间
- 腾讯董事局主席马化腾:创业要分三步走