HTML解析

题目描述

如果你在一台没有安装Netscape浏览器的Macintosh机器上,试着阅读一个html文档,那是件非常困难的事情。
你的任务是要编程实现一个小的html浏览器。要求显示输入文件的内容,你需要知道html的标签:<br>表示换行,<hr>表示水平线,另外还有制表符,空格和换行符。每行不超过80个字符。

输入

输入包括一个你要显示的内容文本。这个文本包括一些单词和HTML标签,它们由一个或多个空格、制表符或换行符分割开的。
一个单词是指由0个或多个字母、数字和标点符号组成的一个序列。例如,abc,123 是一个词,但是abc, 123是两个词,即abc, and 123(即以空格作为单词的分隔符)。一个词不会超过81个字符,而且不会包含任何<或>符号。所有的HTML标签不是br就是hr。

输出

你应该按照如下规则来显示输入的文本:
(1) 如果你读入的词,结果行没有超过80个字符,那么就显示它,否则换行显示。
(2) 如果你读入<br>标签,则开始一个新行。
(3) 如果你读入<hr>标签,则要在新一行中显示80个‘-’字符。
(4) 最后以一个换行作为结束。

样例输入 复制

Hallo, dies ist eine 
ziemlich lange Zeile, die in Html
aber nicht umgebrochen wird.
<br>
Zwei <br> <br> produzieren zwei Newlines. 
Es gibt auch noch das tag <hr> was einen Trenner darstellt.
Zwei <hr> <hr> produzieren zwei Horizontal Rulers.
Achtung       mehrere Leerzeichen irritieren

Html genauso wenig wie


mehrere Leerzeilen.

样例输出 复制

Hallo, dies ist eine ziemlich lange Zeile, die in Html aber nicht umgebrochen
wird.
Zwei

produzieren zwei Newlines. Es gibt auch noch das tag
--------------------------------------------------------------------------------
was einen Trenner darstellt. Zwei
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
produzieren zwei Horizontal Rulers. Achtung mehrere Leerzeichen irritieren Html
genauso wenig wie mehrere Leerzeilen.

代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[100];
    int count=0;
    while(scanf("%s",&a)!=EOF)
    {
        if(strcmp(a,"<br>")==0)
        {
            printf("\n");
            count=0;
        }
         else if(strcmp(a,"<hr>")==0)
        {
            if(count!=0){
                printf("\n");
            }
            for(int i=1;i<=80;i++)
            {
                printf("-");
            }
            printf("\n");
            count=0;
        }
        else{
            if(count+strlen(a)>=80)
            {
                count=0;
                printf("\n");
            }
            if(count!=0)
            {
                printf(" ");
                count++;
            }
            printf("%s",a);
            count+=strlen(a);
        }
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中有很多用于解析HTML的库,其中比较常用的是Jsoup。Jsoup是一个开源的Java HTML解析器,它提供了简单、灵活且易于使用的API,可以方便地从HTML文档中提取数据。 使用Jsoup解析HTML的基本步骤如下: 1. 导入Jsoup库:在Java项目中,首先需要导入Jsoup库。可以通过在项目的构建文件中添加依赖,或者手动下载并导入Jsoup的JAR文件来实现。 2. 获取HTML文档:使用Jsoup的connect()方法连接到指定的URL,或者使用parse()方法将HTML字符串解析为Document对象。 3. 使用选择器提取数据:Jsoup提供了类似于CSS选择器的语法,可以通过选择器来定位HTML文档中的元素。可以使用select()方法来选择元素,并使用text()、html()等方法获取元素的文本内容或HTML代码。 4. 处理提取到的数据:根据需要对提取到的数据进行处理,例如存储到数据库、写入文件或展示在页面上等。 以下是一个简单的示例代码,演示了如何使用Jsoup解析HTML并提取标题和链接: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class HtmlParserExample { public static void main(String[] args) { try { // 获取HTML文档 Document doc = Jsoup.connect("http://example.com").get(); // 使用选择器提取数据 Elements links = doc.select("a[href]"); for (Element link : links) { String title = link.text(); String url = link.attr("href"); System.out.println("Title: " + title); System.out.println("URL: " + url); } } catch (Exception e) { e.printStackTrace(); } } } ``` 这是一个简单的示例,你可以根据具体的需求使用Jsoup提供的更多功能来解析和处理HTML文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值