Ubuntu 14 下用 C 语言开发 HTML 解析工具(有附件)

天台道人 发布于 2016/01/12 20:31
阅读 34
收藏 0

概述

根据开源html/json/xml/regex处理库, 为facebook/youtube/twitter三个网站中的列表页和帖子页编写解析工具。结果以JSON格式输出,附件中有JSON格式说明。

什么是列表页和帖子页?

举例如下, 奇数为列表页, 偶数为帖子页, 其他结构的页面不予考虑。

1 www.facebook.com/barackobama

2 www.facebook.com/barackobama/photos/a.53081056748.66806.6815841748/10153579378436749/

3 twitter.com/barackobama

4 twitter.com/BarackObama/status/685952871167320064

5 www.youtube.com/user/BarackObamadotcom/videos

6 www.youtube.com/watch?v=gNDE25a_OF8

原理

html的内容除了html标签之外, 还可能有json(一般在js中)和xml(确实有), 此工具的目的是结合jquery-selector/json-pointer/xpath/regex四种方式, 来解析html源码, 并输出为json。

开源工具地址

https://github.com/google/gumbo-parser google的html解析器

https://github.com/nostrademons/gumbo-libxml 使用xpath增强的html解析器

https://github.com/lazytiger/gumbo-query 是C++库,但请以C的方式来使用

https://github.com/kbranigan/cJSON

libxml2 / pcre

建议的模块划分方式

A-业务无关的模块

json / xml:基于cJSON(使用json-pointer)和libxml2(使用xpath)的json/xml存取模块,依照附件中的json.h进行,可酌情调整

hp(HtmlParser)模块:基于gumbo-parser / gumbo-libxml / gumbo-query / pcre的html解析器,依照附件中的hp.h进行,可酌情调整

B-业务相关的模块

facebook / youtube / twitter 对各个网站的用户首页和具体推文页面的解析逻辑

parser.c 主模块,判断出是什么网站的什么页面,然后调用不同的工作逻辑解析出想要的内容, 以json-pointer的方式输出为JSON

如何取得自测所需html

请在chrome的查看网页源码功能中取得html,其中,twitter的帖子页面需要登陆才能取得完整评论。

调用方式

./parser sample.html output.json //sample.html是已下载好的html源码文件

测试交付

自测通过, 注意特殊页面(空页面,其他结构的页面,帖子和评论个数很少或者很多)的异常处理。

注意良好的代码风格和质量,以及合理的注释,提交时附上编译文档。

交付时间:不超过7天

加载中
0
Cremyos
Cremyos
附件是空的?
0
天台道人
天台道人
不是呀,我可以下载打开的
0
Cremyos
Cremyos

引用来自“金木道长”的评论

不是呀,我可以下载打开的
我每次下载都显示解压错误,然后打开压缩显示为0KB
天台道人
天台道人
我换firefox试了,还是可以啊,留下你的邮箱
0
红薯
红薯

引用来自“金木道长”的评论

不是呀,我可以下载打开的

引用来自“Cremyos”的评论

我每次下载都显示解压错误,然后打开压缩显示为0KB
直接用浏览器的下载工具,不要用下载工具
0
Cremyos
Cremyos

引用来自“金木道长”的评论

不是呀,我可以下载打开的

引用来自“Cremyos”的评论

我每次下载都显示解压错误,然后打开压缩显示为0KB

引用来自“红薯”的评论

直接用浏览器的下载工具,不要用下载工具
没用下载工具啊,用的是Google的浏览器和360的浏览器下载的,都这样
0
沃德天拉莫帅
沃德天拉莫帅

引用来自“金木道长”的评论

不是呀,我可以下载打开的

引用来自“Cremyos”的评论

我每次下载都显示解压错误,然后打开压缩显示为0KB

引用来自“红薯”的评论

直接用浏览器的下载工具,不要用下载工具

引用来自“Cremyos”的评论

没用下载工具啊,用的是Google的浏览器和360的浏览器下载的,都这样
我这可以下载啊
0
Cremyos
Cremyos

引用来自“金木道长”的评论

不是呀,我可以下载打开的

引用来自“Cremyos”的评论

我每次下载都显示解压错误,然后打开压缩显示为0KB

引用来自“红薯”的评论

直接用浏览器的下载工具,不要用下载工具

引用来自“Cremyos”的评论

没用下载工具啊,用的是Google的浏览器和360的浏览器下载的,都这样

引用来自“成熟的毛毛虫”的评论

我这可以下载啊
1192889920@qq.com哥们能发我一份么
0
thanatosx
thanatosx
现在下载不了
天台道人
天台道人
不会吧,留邮箱
返回顶部
顶部