Ich möchte einige HTML-Daten aus der Seitenquelle extrahieren. Hier ist der Hinweis. Link haben einen HTML-Link view-source: http://www.4icu.org/reviews/index2.htm. Ich möchte fragen, wie ich nur den Namen der Universität und den Ländernamen mit JAVA extrahieren könnte. Ich kenne den Weg, um einfach den Namen der Universität zu extrahieren, aber wie kann ich das Programm schneller machen, indem ich einfach die Tabelle scanne, wenn class = "i", und auch das Land, zB USA, mit der < ... alt = "Vereinigte Staaten" />JAVA Parsing-Tabelle Daten
<tr>
<td><a name="UNIVERSITIES-BY-NAME"></a><h2>A-Z list of world Universities and Colleges</h2>
</tr>
<tr>
<td class="i"><a href="/reviews/9107.htm"> A.T. Still University</a></td>
<td width="50" align="right" nowrap>us <img src="/i/bg.gif" class="fl flag-us" alt="United States" /></td>
</tr>
Vielen Dank im Voraus.
EDIT Nach was @ 11thdimension ist
meine .java-Datei hier gesagt hatpublic class University {
public static void main(String[] args) throws Exception {
System.out.println("Started");
URL url = new URL ("http://www.4icu.org/reviews/index2.htm");
URLConnection spoof = url.openConnection();
// Spoof the connection so we look like a web browser
spoof.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)");
String connect = url.toString();
Document doc = Jsoup.connect(connect).get();
Elements cells = doc.select("td.i");
Iterator<Element> iterator = cells.iterator();
while (iterator.hasNext()) {
Element cell = iterator.next();
String university = cell.select("a").text();
String country = cell.nextElementSibling().select("img").attr("alt");
System.out.printf("country : %s, university : %s %n", country, university);
}
}
}
Allerdings, wenn ich es laufen, es mir die folgende Fehlermeldung gibt.
Started
Exception in thread "main" org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=http://www.4icu.org/reviews/index2.htm
EDIT2 ich das folgende Programm erstellt haben, den Header der HTML-Seite zu bekommen.
public class Get_Header {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.4icu.org/reviews/index2.htm");
URLConnection connection = url.openConnection();
Map responseMap = connection.getHeaderFields();
for (Iterator iterator = responseMap.keySet().iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
System.out.println(key + " = ");
List values = (List) responseMap.get(key);
for (int i = 0; i < values.size(); i++) {
Object o = values.get(i);
System.out.println(o + ", ");
}
}
}
}
Es wiederholt das folgende Ergebnis.
X-Frame-Options =
SAMEORIGIN,
Transfer-Encoding =
chunked,
null =
HTTP/1.1 403 Forbidden,
CF-RAY =
2ca61c7a769b1980-HKG,
Server =
cloudflare-nginx,
Cache-Control =
max-age=10,
Connection =
keep-alive,
Set-Cookie =
__cfduid=d4f8d740e0ae0dd551be15e031359844d1469853403; expires=Sun, 30-Jul-17 04:36:43 GMT; path=/; domain=.4icu.org; HttpOnly,
Expires =
Sat, 30 Jul 2016 04:36:53 GMT,
Date =
Sat, 30 Jul 2016 04:36:43 GMT,
Content-Type =
text/html; charset=UTF-8,
Obwohl ich den Header bekommen kann, aber wie sollte ich den Code in EDIT und EDIT2 zu einem vollständigen kombinieren? Vielen Dank.
Sie es brauchen Sie einmal zu tun oder würde es sein, sich wiederholende tas k? – 11thdimension
Wie lange sollte die Lösung es rechtfertigen, die Frage auf Eis zu legen? – 11thdimension
Ich habe die Frage bearbeitet, um mein Problem einzugrenzen. Danke –