我试图编写Java代码去网站,逐行阅读HTML代码,提取某些数据,包括嵌入的URL转到另一个网站,然后重复流程100倍。 我已经能够使用以下表达式隔离我需要的大部分数据:
s.ranking = line.substring(line.indexOf(">")+1, line.length() -7);
但是我遇到以下问题:
<strong>Writer:</strong> Dylan <br/><strong>Producer:</strong> Tom Wilson  <br/><strong>Released:</strong> July '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
答案 0 :(得分:0)
最好的方法是使用HTML解析器。但是当我读到你的评论时“我正在为一堂课做这个,并且正在学习如何找到,分离和提取数据。”
你可以做些什么:
String producer = "Producer:";
String writer = "Writer:";
String released = "Released:";
String s = "<strong>Writer:</strong> Dylan <br/><strong>Producer:</strong> Tom Wilson  <br/><strong>Released:</strong> July '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 
July '65, Columbia12 weeks; No. 2
注意:您可以使用其他正则表达式删除&amp;#039或&amp; nbsp等标志......