获取百度的歌曲名,歌手和链接!!
复制代码代码如下:
pacote 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;
classe pública IOTOWeb {
public String getHtmlContent(String htmlURL) {
URL url=nulo;
String rowContent = "";
StringBuffer htmlContent = new StringBuffer();
tentar {
url = nova URL(htmlURL);
BufferedReader in = novo BufferedReader(novo InputStreamReader(url
.openStream(), "gb2312"));
while ((rowContent = in.readLine()) != null) {
htmlContent.append(rowContent);
}
in.close();
} catch (MalformedURLException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
} catch (IOException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
return htmlContent.toString();
}
lista pública getLink(String htmlContent) {
ArrayList listLink = new ArrayList();
String regex = "<td[^>]*>[//(]*<a[^>]*href=(/"([^/"]*)/"|/'([^/']* )/'|([^//s>]*))[^>]*>(.*?)[//)]*[//s]*</td>";
Padrão padrão = Pattern.compile(regex, Pattern.DOTALL);
Correspondente correspondente = pattern.matcher(htmlContent);
enquanto (matcher.find()) {
listLink.add(matcher.group());
}
retornar listaLink;
}
public List<String> getHref(String htmlContent) {
Regex de string;
Lista listtHref = new ArrayList();
regex = "href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>]*))/"";
Padrão pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
enquanto (ma.find()) {
listtHref.add(ma.group().replaceFirst("href=/"", "").replace("/"",
""));
}
retornar listaHref;
}
public List<String> getPerson(String htmlContent) {
Regex de string;
Lista lista = new ArrayList();
regex = "//(<a[^>]*href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>] *))[^>]*>(.*?)//)";
Padrão pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
enquanto (ma.find()) {
list.add(ma.group().replaceFirst("href=/"", "").replace("/"", ""));
}
lista de retorno;
}
public List<String> getSongName(String htmlContent) {
Regex de string;
Lista listPerson = new ArrayList();
regex = "<a[^>]*href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>]*)) [^>]*>(.*?)</a>//s";
Padrão pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
enquanto (ma.find()) {
listPerson.add(ma.group());
}
retornar listaPessoa;
}
public String getMainContent(String htmlContent) {
String regex = "<table width=/"100%/" align=/"center/" cellpadding=/"0/" cellpacing=/"0/" class=/"list/">(.*?)</ tabela>";
StringBuffer mainContent = new StringBuffer();
Padrão padrão = Pattern.compile(regex, Pattern.DOTALL);
Correspondente correspondente = pattern.matcher(htmlContent);
enquanto (matcher.find()) {
mainContent.append(matcher.group());
}
retornar mainContent.toString();
}
public String outTag(string final s) {
return s.replaceAll("<.*?>", "");
}
DBTools dbTools = new DBTools();
public void getFromBaiduMap3(String htmlURL) lança Throwable {
HashMap htmlContentMap = new HashMap();
String htmlContent = getHtmlContent(htmlURL);
String mainContent = getMainContent(htmlContent);
Lista listLink = getLink(mainContent);
for (int j = 0; j < listLink.size(); j++) {
String tdTag = listLink.get(j).toString();
Lista songNameList = getSongName(tdTag);
String songName = outTag(songNameList.get(0).toString());
Lista pessoaList = getPerson(tdTag);
String songPerson = "";
if (pessoaList.size() != 0) {
for (int n = 0; n < personList.size(); n++) {
// System.out.println(personList.get(n).toString());
songPerson = outTag(personList.get(n).toString());
}
} outro {
songPerson = "无";
}
// System.out.print(songNameList.get(0).toString());
Lista hrefList = getHref(songNameList.get(0).toString());
String songHref = hrefList.get(0).toString();
System.out.println();
String sql = "inserir em valores da música (songName,songPerson,songHref)(?,?,?)";
ArrayList list_values = new ArrayList();
list_values.add(nomedamúsica);
list_values.add(songPerson);
list_values.add(songHref);
dbTools.update(sql, list_values);
}
}
}
DBTools数据库链接类:
复制代码代码如下:
pacote dbTools;
importar java.util.ArrayList;
importar java.sql.*;
classe pública DBTools {
private PreparedStatement preparadoStatement;
conjunto de resultados privado resultadoSet;
conexão de conexão privada;
ferramentas DB públicas() {
tentar {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
tentar {
conexão = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/TestURL", "root", "zhuyi");
} catch (SQLException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
}
consulta ArrayList pública (String sql, ArrayList list_values) lança Throwable {
ArrayList listRows = new ArrayList();
preparadoStatement = connection.prepareStatement(sql);
for (int i = 0; i < list_values.size(); i++) {
preparadoStatement.setObject(i + 1, list_values.get(i));
}
resultSet = preparadoStatement.executeQuery();
enquanto (resultSet.next()) {
String[] rowinfo = new String[resultSet.getMetaData()
.getColumnCount()];
for (int i = 0; i < rowinfo.length; i++) {
rowinfo[i] = resultSet.getString(i + 1);
}
listRows.add(rowinfo);
}
retornar listaRows;
}
atualização pública void (String sql, ArrayList list_values) lança Throwable {
preparadoStatement = connection.prepareStatement(sql);
for (int i = 0; i < list_values.size(); i++) {
preparadoStatement.setObject(i + 1, list_values.get(i));
}
preparadoStatement.executeUpdate();
preparadoStatement.close();
}
}
Servlet:
复制代码代码如下:
controlador de pacote;
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;
classe pública TestURL estende HttpServlet {
/**
* Construtor do objeto.
*/
URLTeste público() {
super();
}
/**
* Destruição do servlet. <br>
*/
public void destruir() {
super.destruir(); // Apenas coloca a string "destroy" no log
//Coloque seu código aqui
}
/**
* O método doGet do servlet. <br>
*
* Este método é chamado quando um formulário tem seu método de valor de tag igual a obter.
*
* @param solicitação
* a solicitação enviada pelo cliente ao servidor
* @param resposta
* a resposta enviada pelo servidor ao cliente
* @throws ServletException
* se ocorreu um erro
* @throws IOException
* se ocorreu um erro
*/
public void doGet (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException, IOException {
tentar {
IOTOWeb iotoWeb = new IOTOWeb();
iotoWeb.getFromBaiduMap3("http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2");
} catch (lançável e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
}
/**
* O método doPost do servlet. <br>
*
* Este método é chamado quando um formulário tem seu método de valor de tag igual a
* publicar.
*
* @param solicitação
* a solicitação enviada pelo cliente ao servidor
* @param resposta
* a resposta enviada pelo servidor ao cliente
* @throws ServletException
* se ocorreu um erro
* @throws IOException
* se ocorreu um erro
*/
public void doPost (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException, IOException {
resposta.setContentType("texto/html");
PrintWriter out = resposta.getWriter();
fora
.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
out.println("<HTML>");
out.println("<HEAD><TITLE>Um Servlet</TITLE></HEAD>");
out.println("<BODY>");
out.print("Isto é");
out.print(this.getClass());
out.println(", usando o método POST");
out.println(" </BODY>");
out.println("</HTML>");
fora.flush();
out.close();
}
/**
* Inicialização do servlet. <br>
*
* @throws ServletException
*se ocorrer um erro
*/
public void init() lança ServletException {
//Coloque seu código aqui
}
}
获取金书网的图书名:
复制代码代码如下:
pacote 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;
classe pública GetBook {
public String getHtmlContent(String htmlURL) lança Throwable {
URL url=nulo;
String rowContent = "";
StringBuffer htmlContent = new StringBuffer();
url = nova URL(htmlURL);
BufferedReader in = novo BufferedReader(novo InputStreamReader(url
.openStream(), "gb2312"));
while ((rowContent = in.readLine()) != null) {
htmlContent.append(rowContent);
}
in.close();
return htmlContent.toString();
}
public String getNomeDoLivro(String htmlContent) {
String nomeDoLivro = "";
String regex = "<span class=/"style15/">[^>]*</span>";
Padrão padrão = Pattern.compile(regex, Pattern.DOTALL);
Correspondente correspondente = pattern.matcher(htmlContent);
if (matcher.find()) {
nomeDoLivro = matcher.group();
}
return nomeDoLivro;
}
public String outTag(string final s) {
return s.replaceAll("<.*?>", "");
}
DBTools dbtools = new DBTools();
public void getFromJINSHU(String htmlURL) lança Throwable {
String htmlContent = getHtmlContent(htmlURL);
String nomeDoLivro = outTag(getNomeDoLivro(htmlContent));
if (NomeDoLivro! = Nulo &&!"".equals(NomeDoLivro)) {
System.out.println(livroNome);
String sql = "inserir em bookinfo(bookName) valores(?)";
ArrayList list_values = new ArrayList();
list_values.add(livroNome);
dbtools.update(sql, list_values);
}
}
}
Servlet:
复制代码代码如下:
controlador de pacote;
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;
classe pública TestBook estende HttpServlet {
/**
* Construtor do objeto.
*/
public TesteLivro() {
super();
}
/**
* Destruição do servlet. <br>
*/
public void destruir() {
super.destruir(); // Apenas coloca a string "destroy" no log
//Coloque seu código aqui
}
/**
* O método doGet do servlet. <br>
*
* Este método é chamado quando um formulário tem seu método de valor de tag igual a obter.
*
* @param solicitação
* a solicitação enviada pelo cliente ao servidor
* @param resposta
* a resposta enviada pelo servidor ao cliente
* @throws ServletException
* se ocorreu um erro
* @throws IOException
* se ocorreu um erro
*/
int eu = 1;
public void doGet (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException, IOException {
GetBook infobook = new GetBook();
para (; eu < 10000; eu++) {
String bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
tentar {
infobook.getFromJINSHU(bookURL);
} catch (lançável e) {
eu++;
doPost(solicitação,resposta);
}
}
}
/**
* O método doPost do servlet. <br>
*
* Este método é chamado quando um formulário tem seu método de valor de tag igual a
* publicar.
*
* @param solicitação
* a solicitação enviada pelo cliente ao servidor
* @param resposta
* a resposta enviada pelo servidor ao cliente
* @throws ServletException
* se ocorreu um erro
* @throws IOException
* se ocorreu um erro
*/
public void doPost (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException, IOException {
GetBook infobook = new GetBook();
para (; eu < 10000; eu++) {
String bookURL = "http://www.golden-book.com/booksinfo/12/" + eu
+ ".html";
tentar {
infobook.getFromJINSHU(bookURL);
} catch (lançavel e) {
eu++;
doGet(solicitação,resposta);
}
}
}
/**
* Inicialização do servlet. <br>
*
* @throws ServletException
* se ocorrer um erro
*/
public void init() lança ServletException {
//Coloque seu código aqui
}
}
每种功能的实现方法有很多,希望各位可以交流不同的思想和方法。可以加QQ412546724。呵呵