Wikipedia:Java库删除Wikipedia文本标记删除
我下载了wikipedia dump,现在想删除每个页面内容中的wikipedia标记。我试着写正则表达式,但它们太多了,无法处理。我发现了一个python库,但我需要一个java库,因为我想集成到我的代码中 谢谢。可以将各种Wiki语法转换为HTML和其他格式。它还支持MediaWiki语法,这正是Wikipedia使用的语法。虽然Mylyn WikiText主要是一个Eclipse插件,但它也是。分两步完成:Wikipedia:Java库删除Wikipedia文本标记删除,java,parsing,wiki,wikipedia,Java,Parsing,Wiki,Wikipedia,我下载了wikipedia dump,现在想删除每个页面内容中的wikipedia标记。我试着写正则表达式,但它们太多了,无法处理。我发现了一个python库,但我需要一个java库,因为我想集成到我的代码中 谢谢。可以将各种Wiki语法转换为HTML和其他格式。它还支持MediaWiki语法,这正是Wikipedia使用的语法。虽然Mylyn WikiText主要是一个Eclipse插件,但它也是。分两步完成: 让一些现有工具将MediaWiki标记转换为普通HTML 将纯HTML转换为文本
import net.java.textilej.parser.MarkupParser;
import net.java.textilej.parser.builder.HtmlDocumentBuilder;
import net.java.textilej.parser.markup.mediawiki.MediaWikiDialect;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.parser.ParserDelegator;
import java.io.StringReader;
import java.io.StringWriter;
public class Test {
public static void main(String[] args) throws Exception {
String markup = "This is ''italic'' and '''that''' is bold. \n"+
"=Header 1=\n"+
"a list: \n* item A \n* item B \n* item C";
StringWriter writer = new StringWriter();
HtmlDocumentBuilder builder = new HtmlDocumentBuilder(writer);
builder.setEmitAsDocument(false);
MarkupParser parser = new MarkupParser(new MediaWikiDialect());
parser.setBuilder(builder);
parser.parse(markup);
final String html = writer.toString();
final StringBuilder cleaned = new StringBuilder();
HTMLEditorKit.ParserCallback callback = new HTMLEditorKit.ParserCallback() {
public void handleText(char[] data, int pos) {
cleaned.append(new String(data)).append(' ');
}
};
new ParserDelegator().parse(new StringReader(html), callback, false);
System.out.println(markup);
System.out.println("---------------------------");
System.out.println(html);
System.out.println("---------------------------");
System.out.println(cleaned);
}
}
产生:
This is ''italic'' and '''that''' is bold.
=Header 1=
a list:
* item A
* item B
* item C
---------------------------
<p>This is <i>italic</i> and <b>that</b> is bold. </p><h1 id="Header1">Header 1</h1><p>a list: </p><ul><li>item A </li><li>item B </li><li>item C</li></ul>
---------------------------
This is italic and that is bold. Header 1 a list: item A item B item C
这是斜体,那是粗体。
=标题1=
清单:
*项目A
*B项
*项目C
---------------------------
这是斜体,那是粗体 标题1a列表:项目a- 项目B
- 项目C
---------------------------
这是斜体,那是粗体。标题1 a列表:项目a项目B项目C
在哪里下载要导入的java包 这里:试试这种方法。您可能需要根据需要改进PlainTextConverter类。
若你们需要纯文本,你们应该使用WikiClean库 我也遇到了同样的问题,看起来这是java中唯一有效的解决方案 有两个用例: 1) 如果文本不是XML格式,则应添加执行此处理所需的XML标记。假设您之前正在处理XML文件,而现在您的内容没有XML结构,那么您只需添加xmlStartTag和xmlEndTag,如下面的代码所示,它就会处理它
String xmlStartTag = "<text xml:space=\"preserve\">";
String xmlEndTag = "</text>";
String articleWithXml = xmlStartTag + article.getText() + xmlEndTag;
WikiClean cleaner = new WikiClean.Builder().build();
String plainWikiText = cleaner.clean(articleWithXml);
您可以使用获取Wikipedia数据示例:
Jwiki jwiki = new Jwiki("elon musk");
System.out.println("Title :"+jwiki.getDisplayTitle()); //get title
System.out.println("Text : "+jwiki.getExtractText()); //get summary text
System.out.println("Image : "+jwiki.getImageURL()); //get image URL
你发布了一个页面示例,其中显示了你想要删除的标记?我只需要一个函数,可以从内容中删除wiki标记。我不知道如何使用mylyn删除标记。你能告诉我怎么做吗。@算法师:Mylyn WikiText不会删除标记,它会转换成其他格式。很抱歉,我误解了你的问题。你在哪里下载你正在导入的java软件包?非常好,谢谢!它只遗漏了一些其他元素,比如{…}东西。嗨,巴特,那个下载链接不起作用,有其他下载源吗?@kzs这个链接似乎被存档了:我编辑了我的答案,将这个链接包括进来,并从评论中删除了死链接。来吧,堆栈溢出!问题不在中定义的堆栈溢出主题上。请不要回答这样的问题;相反,您应该标记它们以引起注意,它们将被适当关闭或迁移。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-谢谢@Bhuwan。我根据您的建议更新了我的答案。@Sh.Sina我应该将整个转储文件作为clean()方法的输入吗?难道我不可能只为我知道的一些页面标题获得清理过的文本吗?图书馆的文件有点误导人。我应该在哪里输入转储文件,页面标题在哪里?@Sh.Sina谢谢你的回答,但我仍然有问题。我的第一个问题是我应该把转储文件放在哪里。例如,我想获取Wikipedia中“ApacheHTTP服务器”页面的纯文本。我在“E:\\enwiki-20171103-pages-articles-multistream.xml.bz2”中有维基百科的转储文件。如果我给出了上面的文本和提到的标记,库如何知道它应该通过E驱动器中的转储文件?我在代码中没有看到加载转储文件的地方。我不想对整个转储文件进行爬网(对吗?)。我不需要它。我有我需要的页面。
Jwiki jwiki = new Jwiki("elon musk");
System.out.println("Title :"+jwiki.getDisplayTitle()); //get title
System.out.println("Text : "+jwiki.getExtractText()); //get summary text
System.out.println("Image : "+jwiki.getImageURL()); //get image URL