免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5366 | 回复: 11
打印 上一主题 下一主题

解析html [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-29 12:53 |只看该作者 |倒序浏览
目前 我获得一个网页的html codes
其中 有这么一段

-------
-------
<!-- --><div class="getcodeinstructions">
                                        <ol class="listings">
                                          <li><span class="numberone"></span>
                                                <div>
                                                  <label for="bcode">Click inside the box below and copy all the code.</label><br

-------
-----
  我想从这个html codes中 找到上面我贴出来的代码中的字符串“getcodeinstruction”“


请问 有那个大虾能指点下吗?

(目前我  一次行从这个 里面读取1024个bytes, 使用 strstr(buffer,"getcodeinstructions")来 定位这个字符串,

但我觉得会出现一中情况 匹配不到, 举个例子就是前面1024个bytes刚好

包含到getcode 就结束了,然后在一次读取1024个bytes, 就包含到“instructions”

这样 我就无法匹配到我我想要的这个字符串了,不知道有没什么更好的办法来定位这个字符串)


不知道这次问题说清楚了没,清各位赐教

论坛徽章:
0
2 [报告]
发表于 2010-12-29 14:52 |只看该作者
假设你的字符串长度为Len,
1.读取0~1023,匹配
2.读取1023-Len~2047-Len,匹配
3.读取2047-2*Len~3072-2*Len,匹配。
.....

论坛徽章:
0
3 [报告]
发表于 2011-02-28 17:19 |只看该作者
回复 2# scopengl


    恩,这个方法 应该可以解决 字符串cut的问题, 我等下在debug一下;

目前我遇到另一个解析的问题,就是比如:

我  一次读 1024 个bytes;
但是 可能 host 发送过来的只有500个bytes ,甚至 读到0个bytes(网速灰常差时),但我确实这个网页的数据还没发送完,只是网速不行
我们暂时还读不到数据而已,那这个 时候我的处理是delay一次,然后再去读取数据; 可有个问题时, 我如果delay次数多了,可能解些时间就慢了,不知道各位大虾有没什么好的解析html的方法,或有什么参考书,或参考资料推荐下;

论坛徽章:
0
4 [报告]
发表于 2011-02-28 17:31 |只看该作者
回复 3# wanshun1818
跟我之前遇到的问题差不多。我是一边获取数据,一遍解析,后来同事告诉我这样很危险,就先获取html文件,再用libxml解析。

论坛徽章:
0
5 [报告]
发表于 2011-02-28 17:38 |只看该作者
回复 4# shichuan609


    直接获取html文件? 你的意思是说,等所有bytes 都发送完了,在开始解析,是这个意思马?


    但是如果你读完才开始解析,那不是就很慢吗?( 尤其在我们所需要定位的字符串在这个html 开头或者中间的时候)

论坛徽章:
0
6 [报告]
发表于 2011-02-28 17:45 |只看该作者
回复 5# wanshun1818
好像还是不一样啊,我是知道html文件每个节点的,只是得到数据而已。之前做的时候,好像跟2楼说的差不多,也是用拼接的方法,还算挺复杂的,不过后来也能得到数据的。

论坛徽章:
0
7 [报告]
发表于 2011-02-28 18:30 |只看该作者
回复 1# wanshun1818


    post给一个CGI,然后解析stdin。

论坛徽章:
0
8 [报告]
发表于 2011-02-28 18:32 |只看该作者
回复 6# shichuan609


    我弱弱的问一句,“html文件每个节点” 这个东西是什么意思阿?

你后来问题解决了马? 是怎么解决的( 解析数据的速度快不快)

论坛徽章:
0
9 [报告]
发表于 2011-02-28 18:34 |只看该作者
回复 7# daniel_kohler


    我弱弱问一句“post给一个CGI,然后解析stdin。 ” 这个能将详细点吗?
( 我的数据发收 是通过socket 实现的,)

论坛徽章:
0
10 [报告]
发表于 2011-02-28 18:38 |只看该作者
回复 9# wanshun1818


    你的socket是自己写的吗?不用了,直接使用boa或者lighthttpd或者httpd就好了,有了它们,会省很多事儿。

   你缺乏基本的web开发知识,建议你在linux上使用apache先熟悉一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP