如何从带有标签的字符串中提取变量数据?

时间:2014-04-26 23:44:30

标签: java html regex

我试图编写Java代码去网站,逐行阅读HTML代码,提取某些数据,包括嵌入的URL转到另一个网站,然后重复流程100倍。 我已经能够使用以下表达式隔离我需要的大部分数据:

s.ranking = line.substring(line.indexOf(">")+1, line.length() -7);

但是我遇到以下问题:

<strong>Writer:</strong> Dylan <br/><strong>Producer:</strong> Tom Wilson&nbsp <br/><strong>Released:</strong> July &#039;65, Columbia<br/>12 weeks; No. 2</p>  

我需要提取并保存Writer数据(Dylan)。生产者数据(Tom Wilson)和发布日期数据(7月&#39; 65)。有些页面会有多个作者,并会标记为#34;作家:&#34;,有些会有多个制作人,标有&#34;制作人:&#34;

我如何捕捉&#34;迪伦&#34; ,&#34;汤姆威尔逊&#34;和&#34; 7月&#39; 65&#34;从Java上面的这一行?

非常感谢! DM

1 个答案:

答案 0 :(得分:0)

最好的方法是使用HTML解析器。但是当我读到你的评论时“我正在为一堂课做这个,并且正在学习如何找到,分离和提取数据。”

你可以做些什么:

String producer = "Producer:";
String writer = "Writer:";
String released = "Released:";

String s = "<strong>Writer:</strong> Dylan <br/><strong>Producer:</strong> Tom Wilson&nbsp <br/><strong>Released:</strong> July &#039;65, Columbia<br/>12 weeks; No. 2</p>  ";
int writerIndex = s.lastIndexOf(writer);
int producerIndex = s.lastIndexOf(producer);
int realesedIndex = s.lastIndexOf(released);

String writerExtracted = s.substring(writerIndex + writer.length(),
        producerIndex).replaceAll("\\<.*?>", "");
System.out.println(writerExtracted);

String producerExtracted = s.substring(
        producerIndex + producer.length(), realesedIndex).replaceAll(
        "\\<.*?>", "");
System.out.println(producerExtracted);

String releasedExtracted = s.substring(
        realesedIndex + released.length(), s.length()).replaceAll(
        "\\<.*?>", "");
System.out.println(releasedExtracted);

输出

 Dylan 
 Tom Wilson&nbsp 
 July &#039;65, Columbia12 weeks; No. 2  

注意:您可以使用其他正则表达式删除&amp;#039或&amp; nbsp等标志......