我知道如何阅读网站的html代码,例如,下一个java代码从http://www.transfermarkt.co.uk/en/fc-barcelona/startseite/verein_131.html
读取所有html代码。这是一个显示F.C.的所有足球运动员的网站。巴塞罗那。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
public class ReadWebPage {
public static void main(String[] args) throws IOException {
String urltext = "http://www.transfermarkt.co.uk/en/fc-barcelona/startseite/verein_131.html";
URL url = new URL(urltext);
BufferedReader in = new BufferedReader(new InputStreamReader(url
.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
// Process each line.
System.out.println(inputLine);
}
in.close();
}
}
好的,但现在我需要处理HTML代码,我需要获取名称(“Valdés,Victor”,“Pinto,JoséManuel”等等)和职位(守门员,国防,中场) ,Striker)球队的每个球员。例如,我需要创建一个ArrayList <String> PlayerNames
和一个ArrayList <String> PlayerPositions
,并将所有玩家的所有名称和位置放在这些数组上。
我怎么做?我找不到可以在google上执行此操作的代码示例..... 欢迎使用代码示例
感谢
答案 0 :(得分:9)
我建议使用HtmlUnit,这样您就可以访问HTML页面的DOM树,甚至可以在使用AJAX将数据动态放入页面时执行JavaScript。
你也可以使用JSoup:没有JavaScript,但更轻量级,支持CSS选择器。
答案 1 :(得分:2)
我认为最好的方法是首先将HTML代码纯化为有效的XHTML表单,然后应用XSL转换 - 检索可以使用XPATH表达式的部分信息。最好的html标签平衡器在我看来是neko HTML(http://nekohtml.sourceforge.net/)。
答案 2 :(得分:0)
您可能想看一下htmlparser
我用这个类似的东西。
使用类似这样的东西:
Parser fullWebpage = new Parser("WEBADDRESS");
NodeList nl = fullWebpage.extractAllNodesThatMatch(new TagNameFilter("<insert html tag>"));
NodeList tds = nodes.extractAllNodesThatMatch(new TagNameFilter("a"),true);
String data = tds.toHtml();
答案 3 :(得分:0)
Java有自己的内置HTML解析器。这个解析器的一个积极特征是它具有容错性,并且即使它们丢失或拼写错误也会假设某些标记。虽然名为swing.text.html.Parser,但它实际上并没有与Swing共享(只有文本和HTML一样是文本)。使用ParserDelegator。您需要编写callback以便与此解析器一起使用,否则使用起来并不复杂。可以找到代码示例(写为ParserDelegator测试)here。有人说它提醒了HotJava browser。它的唯一问题似乎没有升级到最新版本的HTML。
简单的代码示例是
Reader reader; // read HTML from somewhere
HTMLEditorKit.ParserCallback callback = new MyCallBack(); // Implement that interface.
ParserDelegator delegator = new ParserDelegator();
delegator.parse(reader, callback, false);
答案 4 :(得分:0)
我找到了一个正是您所寻找的链接: http://tiny-url.org/work_with_html_java