获取百度的歌曲名,歌手和链接!!
复制代码代码如下:
paquete webTools;
importar java.io.BufferedReader;
importar java.io.IOException;
importar java.io.InputStreamReader;
importar java.io.UnsupportedEncodingException;
importar java.net.MalformedURLException;
importar java.net.URL;
importar java.util.ArrayList;
importar java.util.HashMap;
importar java.util.List;
importar java.util.regex.Matcher;
importar java.util.regex.Pattern;
importar dbTools.DBTools;
clase pública IOTOWeb {
cadena pública getHtmlContent (cadena htmlURL) {
URL URL = nulo;
Contenido de fila de cadena = "";
StringBuffer htmlContent = nuevo StringBuffer();
intentar {
URL = nueva URL (htmlURL);
BufferedReader en = nuevo BufferedReader (nuevo InputStreamReader (url
.openStream(), "gb2312"));
mientras ((rowContent = in.readLine()) != nulo) {
htmlContent.append(filaContenido);
}
cercar();
} captura (MalformedURLException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
} captura (UnsupportedEncodingException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
} captura (IOException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
devolver htmlContent.toString();
}
Lista pública getLink (String htmlContent) {
ArrayList listLink = nuevo ArrayList();
Expresión regular de cadena = "<td[^>]*>[//(]*<a[^>]*href=(/"([^/"]*)/"|/'([^/']* )/'|([^//s>]*))[^>]*>(.*?)[//)]*[//s]*</td>";
Patrón patrón = Pattern.compile(regex, Pattern.DOTALL);
Comparador de coincidencias = patrón.matcher(htmlContent);
mientras (matcher.find()) {
listLink.add(matcher.group());
}
lista de retornoEnlace;
}
Lista pública<Cadena> getHref(Cadena htmlContent) {
expresión regular de cadena;
Lista listatHref = new ArrayList();
expresión regular = "href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>]*))/"";
Patrón pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
mientras (ma.find()) {
listtHref.add(ma.group().replaceFirst("href=/"", "").replace("/"",
""));
}
lista de retornotHref;
}
Lista pública<Cadena> getPerson(Cadena htmlContent) {
expresión regular de cadena;
Lista lista = nueva ArrayList();
expresión regular = "//(<a[^>]*href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>] *))[^>]*>(.*?)//)";
Patrón pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
mientras (ma.find()) {
list.add(ma.group().replaceFirst("href=/"", "").replace("/"", ""));
}
lista de devolución;
}
Lista pública<Cadena> getNombreCanción(Cadena contenido html) {
expresión regular de cadena;
Lista listaPersona = new ArrayList();
expresión regular = "<a[^>]*href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>]*)) [^>]*>(.*?)</a>//s";
Patrón pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
mientras (ma.find()) {
listPerson.add(ma.grupo());
}
lista de retornoPersona;
}
cadena pública getContenido principal (cadena htmlContent) {
String regex = "<table width=/"100%/" align=/"center/" cellpadding=/"0/"cellspacing=/"0/" class=/"list/">(.*?)</ tabla>";
StringBuffer contenido principal = nuevo StringBuffer();
Patrón patrón = Pattern.compile(regex, Pattern.DOTALL);
Comparador de coincidencias = patrón.matcher(htmlContent);
mientras (matcher.find()) {
contenido principal.append(matcher.group());
}
devolver contenido principal.toString();
}
Etiqueta de cadena pública (cadena final s) {
return s.replaceAll("<.*?>", "");
}
DBTools dbTools = nuevas DBTools();
public void getFromBaiduMap3 (String htmlURL) lanza Throwable {
HashMap htmlContentMap = nuevo HashMap();
Cadena htmlContent = getHtmlContent(htmlURL);
Cadena contenido principal = getContenidoMain(htmlContent);
Lista listLink = getLink(mainContent);
para (int j = 0; j < listLink.size(); j++) {
Cadena tdTag = listLink.get(j).toString();
Lista de nombres de canciones = getNombre de canciones (tdTag);
String songName = outTag(songNameList.get(0).toString());
Lista listapersonas = getPerson(tdTag);
Cadena canciónPersona = "";
si (listapersona.tamaño()! = 0) {
for (int n = 0; n < listapersona.tamaño(); n++) {
// System.out.println(personList.get(n).toString());
songPerson = outTag(personList.get(n).toString());
}
} demás {
personacanción = "无";
}
// System.out.print(songNameList.get(0).toString());
Lista hrefList = getHref(songNameList.get(0).toString());
Cadena songHref = hrefList.get(0).toString();
Sistema.out.println();
String sql = "insertar en los valores de la canción (nombre de la canción, persona de la canción, Href de la canción) (?,?,?)";
ArrayList lista_valores = nueva ArrayList();
list_values.add(nombredecanción);
list_values.add(personacanción);
list_values.add(canciónHref);
dbTools.update(sql, lista_valores);
}
}
}
DBTools数据库链接类:
复制代码代码如下:
paquete dbTools;
importar java.util.ArrayList;
importar java.sql.*;
herramientas DB de clase pública {
declaración preparada privada declaración preparada;
conjunto de resultados privado conjunto de resultados;
conexión de conexión privada;
herramientas DB públicas() {
intentar {
Class.forName("com.mysql.jdbc.Driver");
} captura (ClassNotFoundException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
intentar {
conexión = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/TestURL", "root", "zhuyi");
} captura (SQLException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
}
consulta pública ArrayList (String sql, ArrayList list_values) lanza Throwable {
ArrayList listRows = nueva ArrayList();
prepareStatement = conexión.prepareStatement(sql);
para (int i = 0; i < list_values.size(); i++) {
prepareStatement.setObject(i + 1, list_values.get(i));
}
conjunto de resultados = prepareStatement.executeQuery();
mientras (resultadoSet.next()) {
Cadena[] información de fila = nueva Cadena[resultSet.getMetaData()
.getColumnCount()];
para (int i = 0; i < filainfo.length; i++) {
información de fila[i] = resultSet.getString(i + 1);
}
listRows.add(rowinfo);
}
devolver listaFilas;
}
actualización pública vacía (String sql, ArrayList list_values) lanza Throwable {
prepareStatement = conexión.prepareStatement(sql);
para (int i = 0; i < list_values.size(); i++) {
prepareStatement.setObject(i + 1, list_values.get(i));
}
preparadoStatement.executeUpdate();
declaraciónpreparada.close();
}
}
Servlet:
复制代码代码如下:
controlador de paquetes;
importar java.io.IOException;
importar java.io.PrintWriter;
importar java.util.List;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar webTools.IOTOWeb;
la clase pública TestURL extiende HttpServlet {
/**
* Constructor del objeto.
*/
URL de prueba pública() {
súper();
}
/**
* Destrucción del servlet. <br>
*/
destrucción de vacío público () {
super.destruir(); // Simplemente pone la cadena "destruir" en el registro
// Pon tu código aquí
}
/**
* El método doGet del servlet. <br>
*
* Este método se llama cuando un formulario tiene su método de etiqueta con valor igual a get.
*
* Solicitud @param
* la solicitud enviada por el cliente al servidor
* @param respuesta
* la respuesta enviada por el servidor al cliente
* @throws ServletException
* si ocurrió un error
* @throws IOException
* si ocurrió un error
*/
public void doGet (solicitud HttpServletRequest, respuesta HttpServletResponse)
lanza ServletException, IOException {
intentar {
IOTOWeb iotoWeb = nuevo IOTOWeb();
iotoWeb.getFromBaiduMap3("http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2");
} captura (tirable e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
}
/**
* El método doPost del servlet. <br>
*
* Este método se llama cuando un formulario tiene su método de valor de etiqueta igual a
* correo.
*
* Solicitud @param
* la solicitud enviada por el cliente al servidor
* @param respuesta
* la respuesta enviada por el servidor al cliente
* @throws ServletException
* si ocurrió un error
* @throws IOException
* si ocurrió un error
*/
public void doPost (solicitud HttpServletRequest, respuesta HttpServletResponse)
lanza ServletException, IOException {
respuesta.setContentType("texto/html");
PrintWriter fuera = respuesta.getWriter();
afuera
.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transicional//ES/">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>Un servlet</TITLE></HEAD>");
out.println(" <CUERPO>");
out.print("Esto es");
out.print(this.getClass());
out.println(", usando el método POST");
out.println(" </BODY>");
out.println("</HTML>");
salida.flush();
fuera.cerrar();
}
/**
* Inicialización del servlet. <br>
*
* @throws ServletException
* si ocurre un error
*/
public void init() lanza ServletException {
// Pon tu código aquí
}
}
获取金书网的图书名:
复制代码代码如下:
paquete webTools;
importar java.io.BufferedReader;
importar java.io.InputStreamReader;
importar java.net.URL;
importar java.util.ArrayList;
importar java.util.List;
importar java.util.regex.Matcher;
importar java.util.regex.Pattern;
importar dbTools.DBTools;
clase pública GetBook {
cadena pública getHtmlContent (cadena htmlURL) lanza Throwable {
URL URL = nulo;
Contenido de fila de cadena = "";
StringBuffer htmlContent = nuevo StringBuffer();
URL = nueva URL (htmlURL);
BufferedReader en = nuevo BufferedReader (nuevo InputStreamReader (url
.openStream(), "gb2312"));
mientras ((rowContent = in.readLine()) != nulo) {
htmlContent.append(filaContenido);
}
cercar();
devolver htmlContent.toString();
}
cadena pública getBookName (String htmlContent) {
Cadena nombre del libro = "";
String regex = "<span class=/"style15/">[^>]*</span>";
Patrón patrón = Pattern.compile(regex, Pattern.DOTALL);
Comparador de coincidencias = patrón.matcher(htmlContent);
si (matcher.find()) {
nombre del libro = matcher.group();
}
devolver nombre del libro;
}
Etiqueta de cadena pública (cadena final s) {
return s.replaceAll("<.*?>", "");
}
DBTools dbtools = nuevas DBTools();
public void getFromJINSHU (String htmlURL) lanza Throwable {
Cadena htmlContent = getHtmlContent(htmlURL);
String nombre del libro = outTag(getBookName(htmlContent));
if (nombre del libro! = null &&!"".equals(nombre del libro)) {
System.out.println(nombredellibro);
String sql = "insertar en bookinfo(bookName) valores(?)";
ArrayList lista_valores = nueva ArrayList();
list_values.add(nombre del libro);
dbtools.update(sql, lista_valores);
}
}
}
Servlet principal:
复制代码代码如下:
controlador de paquetes;
importar java.io.IOException;
importar java.io.PrintWriter;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
importar webTools.GetBook;
TestBook de clase pública extiende HttpServlet {
/**
* Constructor del objeto.
*/
Libro de pruebas público() {
súper();
}
/**
* Destrucción del servlet. <br>
*/
destrucción de vacío público () {
super.destruir(); // Simplemente pone la cadena "destruir" en el registro
// Pon tu código aquí
}
/**
* El método doGet del servlet. <br>
*
* Este método se llama cuando un formulario tiene su método de etiqueta con valor igual a get.
*
* Solicitud @param
* la solicitud enviada por el cliente al servidor
* @param respuesta
* la respuesta enviada por el servidor al cliente
* @throws ServletException
* si ocurrió un error
* @throws IOException
* si ocurrió un error
*/
int yo = 1;
public void doGet (solicitud HttpServletRequest, respuesta HttpServletResponse)
lanza ServletException, IOException {
GetBook bookinfo = nuevo GetBook();
para (; yo < 10000; yo ++) {
Cadena bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
intentar {
bookinfo.getFromJINSHU(libroURL);
} captura (tirable e) {
yo ++;
hacerPublicar(solicitud, respuesta);
}
}
}
/**
* El método doPost del servlet. <br>
*
* Este método se llama cuando un formulario tiene su método de valor de etiqueta igual a
* correo.
*
* Solicitud @param
* la solicitud enviada por el cliente al servidor
* @param respuesta
* la respuesta enviada por el servidor al cliente
* @throws ServletException
* si ocurrió un error
* @throws IOException
* si ocurrió un error
*/
public void doPost (solicitud HttpServletRequest, respuesta HttpServletResponse)
lanza ServletException, IOException {
GetBook bookinfo = nuevo GetBook();
para (; yo < 10000; yo ++) {
Cadena bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
intentar {
bookinfo.getFromJINSHU(libroURL);
} captura (tirable e) {
yo ++;
doGet(solicitud, respuesta);
}
}
}
/**
* Inicialización del servlet. <br>
*
* @throws ServletException
* si ocurre un error
*/
public void init() lanza ServletException {
// Pon tu código aquí
}
}
每种功能的实现方法有很多,希望各位可以交流不同的思想和方法。可以加QQ412546724。呵呵