首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从html页面自动创建模板?

如何从html页面自动创建模板?
EN

Stack Overflow用户
提问于 2011-07-08 08:34:43
回答 1查看 374关注 0票数 2

我有一个用例,在这个用例中,我需要用Java以编程方式以给定网页的格式呈现一个未格式化的文本。也就是说,文本应该像网页一样自动格式化,包含样式、段落、项目符号等。

正如我首先看到的,我必须分析这段未格式化的文本,以找出段落、项目符号、标题等的候选者。我打算使用Lucene analyze /tokenizer来完成这项任务。还有别的选择吗?

第二个问题是将格式化的网页转换成某种类型的模板(例如速度模板),其中包含标题、项目符号等各种实体的占位符。

Java中有没有文本分析/模板库可以帮助我做到这一点?最好是开源的。

对于用Java更好地完成这类任务,还有什么其他建议吗?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2011-07-08 10:11:05

在你正在做的事情中有很多困难的部分。

user input

如果你不要求你的用户提供任何上下文,你永远也猜不到文本的结构。至少,您应该要求他们在您的GUI中提供一个标题和一系列段落。

理想情况下,您可以要求他们遵循一种众所周知的标记语言(Markdown、Textile等)。并使用开源解析器来提取结构。

外部页面

如果使用任何页面,您唯一可以依赖的就是“结构化标记”。因此,假设您知道页面的标题应该是"Hello World",并且页面中的某个地方有一个"h1“元素,那么您可能会认为这就是标题所在的位置。

但是,如果页面是一个div标签汤,并且只使用CSS来区分标题的呈现,而不是文本的大部分,那么您将不得不猜测样式是如何完成的:如果您不知道页面是如何制作的,这显然是不可能的。

我认为Lucene不会对此有所帮助(据我所知,Lucene是用来为大量文本中使用的单词创建索引的;我不认为它可以帮助您猜测文本的哪一部分是标题、副标题等)。

从外部页面生成模板的

假设您“猜对了”,您可以通过以下方式生成内容

choice

  • storing
  • copy粘贴页面
  • 使用模板语言的标记替换要更改的部分模板系统可以访问的位置
  • 配置模板/视图系统(viewResolver velocity)以将正确的模板用于rigth person

这当然会带来可怕的法律问题,因为您的模板将包含原始网站作者的作品(最有可能是受版权保护的材料)

更现实的解决方案

我建议你把你的问题限制在:

使用具有一些可用结构信息的输入的

  • (使用图形用户界面输入、使用标记语言、您提供的whatever)
  • using模板、了解

的结构(并且可以非常容易地重新使用

请注意,这些点都与模板系统无关。

否则,我担心你的工作量是不合理的……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6621935

复制
相关文章
Java8 - Streams flatMap()
在 Java 8 中,我们可以使用 flatMap 将上述 2 级 Stream 转换为一级 Stream 或将 二维数组转换为 一维数组。
小小工匠
2023/01/03
1.6K0
Java8 - Streams flatMap()
Java8——行为参数化传递代码
1、初试牛刀:筛选绿苹果 第一个解决方案可能是下面这样的: public static List<Apple> filterGreenApples(List<Apple> inventory){ List<Apple> result=new ArrayList<>(); //仅仅筛选出绿苹果 for (Apple apple : inventory) { if ("green".equals(apple.getColor())){
AlbertZhang
2020/09/02
5090
Java 8 Streams map() 示例
在Java 8中stream().map(),您可以将对象转换为其他对象。查看以下示例:
三产
2021/01/12
6880
Java8 - Streams map()
Stream.map()是Stream最常用的一个转换方法,它把一个Stream转换为另一个Stream
小小工匠
2023/01/01
4540
Java8 - Streams map()
向Bash函数传递参数
除非发生语法错误或已存在同名的只读函数,否则函数定义的退出状态为零。执行时,函数的退出状态码是在主体中执行的最后一个命令的退出状态码。
程序熵
2023/09/25
1940
向Bash函数传递参数
C++函数参数传递
当形参是非引用类型时,实参的值会被拷贝给形参,实参和形参是两个完全不同的对象,函数对形参做的所有操作都不会影响实参。
TOMOCAT
2021/05/11
1.7K0
Python函数参数传递机制
其中Number、String、Tuple和Sets是不可变类型,List和Dictionary是可变类型。
猫叔Rex
2022/01/24
8040
Python 函数作为参数传递
#map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。 #map通过读入的函数(这里是lambda函数)来操作数据 def test_func_map():     re = map((lambda x: x+3), [1, 2, 3, 4])     print re def testA(a, b, **kargs):     print a+b     print "testA: %s" % kargs #函数作为参数传递 def test_func(func, a, b, **kargs):     func(a, b)     print "test_func: %s" % kargs #函数作为参数传递 def test_func_lambda(func, **kargs):     func()     print "test_func_lambda: %s" % kargs def test_func_getattr():     func = getattr(obj, "testA")     func(1, 2) class TestGetattr():     aa = "2a"     def get_attr(self):         print "test getattr()"     def print_text(self):         print "print text"     def print_string(self):         print "print string" #getattr(obj, "a")的作用和obj.a是一致的,但该方法还有其他的用处,最方便的就是用来实现工厂方法 #根据传入参数不同,调用不同的函数实现几种格式的输出 def output(print_type="text"):     tg = TestGetattr()     output_func = getattr(tg, "print_%s" % print_type)     output_func() if __name__ == "__main__":     #test_func(testA, 1, 2, aa="aa")     #test_func_lambda((lambda: testA(1, 2, bb="bb")), cc="cc")     #test_func_map()     #test_func_getattr()     #getattr方法,传入参数是对象和该对象的函数或者属性的名字,返回对象的函数或者属性实例     obj = TestGetattr()     func = getattr(obj, "get_attr") #getattr()获得对象的属性和方法     func()     print getattr(obj, "aa") #完成对象的反射     print obj.aa     #callable方法,如果传入的参数是可以调用的函数,则返回true,否则返回false。     print callable(getattr(obj, "aa"))     output("string")
py3study
2020/01/09
3K0
Python函数参数传递机制
        最近在写代码的过程中,发现Python参数传递不是很明白。Python确实很灵活,但是灵活的后果就是要花更多的时间去研究。废话不多说,始めましょう!!!
py3study
2020/01/09
1K0
【Python】函数进阶 ③ ( 函数作为参数传递 )
之前介绍的函数 , 都是 接收具体的 变量 或 字面量 数据 作为参数 , 如 : 数字 / 布尔值 / 字典 / 列表 / 元组 等 ;
韩曙亮
2023/10/11
4560
【Python】函数进阶 ③ ( 函数作为参数传递 )
Java 8 中的 Streams API 详解
Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错, 但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java 8 中首次出现的 java.util.stream 是一个函数式语言+多核时代综合影响的产物。
编程十年
2019/09/17
1.1K0
Golang函数参数的值传递和引用传递
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数
仙人技术
2021/08/31
2.5K0
Golang函数参数的值传递和引用传递
Java 参数传递是值传递还是引用传递?
首先把结论表明,Java 的参数传递是值传递,因为有部分细节让人引起误解以为是引用传递,故我们写两个例子来举例探讨。
萬物並作吾以觀復
2019/05/10
2.8K0
java中的参数传递-值传递、引用传递
参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递。
chenchenchen
2022/11/29
4.7K0
java中的参数传递-值传递、引用传递
go语言:函数参数传递详解
参数传递是指在程序的传递过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程。比较常见的参数传递有:值传递,按地址传递参数或者按数组传递参数。
李海彬
2018/07/26
9050
go语言:函数参数传递详解
python开发_函数的参数传递
在这个用例中,我们要讨论的是关于函数的传参问题 我所使用的python版本为3.3.2
Hongten
2018/09/13
1.1K0
Java的参数传递是值传递还是引用传递
当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递?    答:是按值传递。Java 语言的参数传递只有按值传递。当一个实例对象作为参数被传递到方
nnngu
2018/03/15
3.3K0
Java的参数传递是值传递还是引用传递
Go-函数作为参数传递
编码过程中业务需要将一个函数,作为参数传递到函数内部。Go 语言的匿名函数是一个闭包(Closure)
王小明_HIT
2023/03/01
1.7K0
Go-函数作为参数传递
scrapy回调函数传递参数
scrapy.Request 的callback传参的两种方式 1.使用 lambda方式传递参数 def parse(self, response): for sel in response.xpath('//li[@class="clearfix"]/div[@class="list_con"]'): item=DmozItem() item['href']=sel.xpath('h2/a/@href').extract()[0] yield sc
用户1558882
2018/04/03
1.2K0
点击加载更多

相似问题

使用Java 8 Streams对集合进行分组和排序

11

带参数的Java 8 streams映射

31

Java Streams中的lambda函数集合

15

如何使用Java 8 streams流式传输带有集合的地图?

246

使用不同集合的Java8- Streams嵌套ForEach

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文