问题3069--CJJJ 的白给抓取机

3069: CJJJ 的白给抓取机

时间限制: 1 Sec  内存限制: 128 MB
提交: 25  解决: 4
[状态] [讨论版] [提交] [命题人:]
题目描述
      CJJJ 现在用爬虫四处爬别人的网站,并且完全忽略 robot.txt,然而她把 HTML 内容爬取下来后却不知道怎么处理,现在请你帮她从中找出指定 ID 的标签的 content
      HTML 是一个超文本标记语言,每个标签由一个开始标记和一个结束标记构成,部分标签是自闭合的(即没有结束标记,它不能包含任何 content)。
      对于非自闭合标签,书写格式为“<[tag-name] [attributes]>[content]</[tag-name]>”,其中方括号括起来的表示变量,“tagName”是标签名称、“attributes”是属性、“content”是标签的 content、“<xxx>”是开始标记、“</xxx>”是结束标记。
      对于自闭合标签,书写格式为“<[tag-name]/>”,结尾的“/”可有可无。
      attribute 的写法非常简:“key="value"”,特别的,如果希望用“value”表示布尔类型,可以写为“key=true”或“key=false”,也可以直接用“key”来表示布尔真。
      HTML 中的注释以“<!--”开始,“-->”结束,注释效果等价于 C 中的 `/* */`。
      例如:
<div id="rich" class = "block" data-value= "运算符之间的空格是数量任意、可有可无的,但是一般都不写空格,题目保证数据输入没有空格。属性之间、标签名和属性之间使用空格分隔,数量任意但至少有一个。" contenteditable>
    这是一个外部标签
    <p>这是一个内部标签</p>
</div>
<input value="这是一个自闭合标签">
<!-- <br/> 也是一个自闭合标签 -->
<br/>
      HTML 中可以给标签添加“id”,id 在属性中给出,“key”为“id”,上面的例子中我们就声明了一个 id 为“rich”的标签。
输入
      首先输入一行,包含一个字符串,表示要提取的标签的 ID。
      然后输入任意行(输入至少包含一个非空字符),表示一个 HTML 的内容,以 EOF 结束。
      输入的 HTML 中仅有如下标签是自闭合标签:“br”“hr”“img”“input”“link”“meta”“area”,任何标签名称只可能包含小写英文字母、阿拉伯数字、连字符(-)。
      输入保证满足以下条件:
  • 标签名和“<”“>”“</”之间直接相连,没有任何符号间隔
  • attribute 的形式为“[key]=[value]”,等号左右没有空格
  • attribute 的 value 中不会出现“<”和“>”
  • content 中“<”和“>”不会以文本的形式出现
  • 每一行长度的长度不会超过 1000
  • 指定 ID 的标签的 content 的长度不会超过 3000
  • 任意一个标签名的长度不会超过 10
  • 起始标签一定在一行中,不会拆成多行
  • 结束标签一定在一行中,不会拆成多行
  • “</”“/>”“<!--”“-->”中不会包含空格
  • 输入不包含“DOCTYPE”之类题干中没有提到的语句
  • 每个标签的属性不会重复
输出
      输出对应标签的 content,content 从标签的第一个非换行符的字符开始。
      输出时按如下顺序输出结果:
  1. 若输入的 HTML 格式错误则输出“duo lao a cjmm”
  2. 若指定标签不存在则输出“duo lao a cjjj”
  3. 若指定标签没有 content 或 content 为空(仅有空白字符也算为空,空白字符包括空格、制表符、换行符)则输出“QAQ”
      当且仅当以下情况出现时当作格式错误,题目保证不会出现其它任何错误:
  • 非自闭合标签缺少闭合标签
  • 闭合标签缺少开始标签
  • 自闭合标签添加了闭合标签
      判题时忽略行尾空格和最后一行结尾的换行符。
样例输入 Copy
rich
<div id="rich" class="block" data-value="运算符之间的空格是数量任意、可有可无的,但是一般都不写空格。属性之间、标签名和属性之间使用空格分隔,数量任意但至少有一个" contenteditable>
    这是一个外部标签
    <p>这是一个内部标签</p>
    <!-- 当目标标签内部包含注释时连同注释一起输出 -->
</div>
样例输出 Copy
    这是一个外部标签
    <p>这是一个内部标签</p>
    <!-- 当目标标签内部包含注释时连同注释一起输出 -->
提示

样例输入2

test
<body><div>asdfasdf</body></div>

样例输出2

duo lao a cjmm

样例解释

      每个标签必须在其父标签结束前结束,这里在 body 结束时 div 未结束,所以 div 视为缺少结束标记。

友情提示

      id 区分大小写。

来源/分类