获取百度的歌曲名,歌手和链接!!
复制代码代码如下:
пакет веб-инструментов;
импортировать java.io.BufferedReader;
импортировать java.io.IOException;
импортировать java.io.InputStreamReader;
импортировать java.io.UnsupportedEncodingException;
импортировать java.net.MalformedURLException;
импортировать java.net.URL;
импортировать java.util.ArrayList;
импортировать java.util.HashMap;
импортировать java.util.List;
импортировать java.util.regex.Matcher;
импортировать java.util.regex.Pattern;
импортировать dbTools.DBTools;
общественный класс IOTOWeb {
общественная строка getHtmlContent (String htmlURL) {
URL-адрес = ноль;
Строка rowContent = "";
StringBuffer htmlContent = новый StringBuffer();
пытаться {
URL = новый URL (htmlURL);
BufferedReader in = новый BufferedReader (новый InputStreamReader (url
.openStream(), "gb2312");
while ((rowContent = in.readLine()) != null) {
htmlContent.append(rowContent);
}
в.закрыть();
} catch (MalformedURLException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
} catch (IOException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
вернуть htmlContent.toString();
}
общедоступный список getLink (String htmlContent) {
ArrayList listLink = новый ArrayList();
Строковое регулярное выражение = "<td[^>]*>[//(]*<a[^>]*href=(/"([^/"]*)/"|/'([^/']* )/'|([^//s>]*))[^>]*>(.*?)[//)]*[//s]*</td>";
Шаблон шаблона = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = шаблон.matcher(htmlContent);
в то время как (matcher.find()) {
listLink.add(matcher.group());
}
вернуть списокСсылка;
}
общественный список getHref (String htmlContent) {
Строковое регулярное выражение;
Список listtHref = новый ArrayList();
regex = "href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>]*))/"";
Шаблон pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
в то время как (ma.find()) {
listtHref.add(ma.group().replaceFirst("href=/"", "").replace("/"",
""));
}
вернуть списокtHref;
}
общественный список <String> getPerson (String htmlContent) {
Строковое регулярное выражение;
Список списка = новый ArrayList();
regex = "//(<a[^>]*href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>] *))[^>]*>(.*?)//)";
Шаблон pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
в то время как (ma.find()) {
list.add(ma.group().replaceFirst("href=/"", "").replace("/"", ""));
}
список возврата;
}
публичный список getSongName (String htmlContent) {
Строковое регулярное выражение;
Список listPerson = новый ArrayList();
regex = "<a[^>]*href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>]*)) [^>]*>(.*?)</a>//s";
Шаблон pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
в то время как (ma.find()) {
listPerson.add(ma.group());
}
вернуть списокЧеловек;
}
общественная строка getMainContent (String htmlContent) {
Строковое регулярное выражение = "<table width=/"100%/" align=/"center/" cellpadding=/"0/" cellpacing="0/" class=/"list/">(.*?)</ таблица>";
StringBuffer mainContent = новый StringBuffer();
Шаблон шаблона = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = шаблон.matcher(htmlContent);
в то время как (matcher.find()) {
mainContent.append(matcher.group());
}
вернуть mainContent.toString();
}
общественная строка outTag (окончательная строка s) {
return s.replaceAll("<.*?>", "");
}
DBTools dbTools = новый DBTools();
public void getFromBaiduMap3(String htmlURL) бросает Throwable {
HashMap htmlContentMap = новый HashMap();
Строка htmlContent = getHtmlContent(htmlURL);
Строка mainContent = getMainContent(htmlContent);
Список listLink = getLink(mainContent);
for (int j = 0; j < listLink.size(); j++) {
String tdTag = listLink.get(j).toString();
Список songNameList = getSongName(tdTag);
Строка songName = outTag(songNameList.get(0).toString());
Список personList = getPerson(tdTag);
Строка songPerson = "";
если (personList.size() != 0) {
for (int n = 0; n <personList.size(); n++) {
// System.out.println(personList.get(n).toString());
songPerson = outTag(personList.get(n).toString());
}
} еще {
songPerson = "无";
}
// System.out.print(songNameList.get(0).toString());
Список hrefList = getHref(songNameList.get(0).toString());
Строка songHref = hrefList.get(0).toString();
Система.out.println();
String sql = "вставить в песню(songName,songPerson,songHref) значения(?,?,?)";
ArrayList list_values = новый ArrayList();
list_values.add(имя песни);
list_values.add(songPerson);
list_values.add(songHref);
dbTools.update(sql, list_values);
}
}
}
Программа DBTools:
复制代码代码如下:
пакет dbTools;
импортировать java.util.ArrayList;
импортировать java.sql.*;
общественный класс DBTools {
частный ReadedStatement подготовленныйStatement;
частный набор результатов resultSet;
частное подключение;
общественный DBTools() {
пытаться {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
пытаться {
соединение = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/TestURL", "root", "zhuyi");
} catch (SQLException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
публичный запрос ArrayList (String sql, ArrayList list_values) выдает Throwable {
ArrayList listRows = новый ArrayList();
подготовленныйStatement = Connection.prepareStatement(sql);
for (int i = 0; i < list_values.size(); i++) {
подготовленныйStatement.setObject(i + 1, list_values.get(i));
}
resultSet = подготовленныйStatement.executeQuery();
в то время как (resultSet.next()) {
String[] rowinfo = новая String[resultSet.getMetaData()
.getColumnCount()];
for (int i = 0; i <rowinfo.length; i++) {
rowinfo[i] = resultSet.getString(i + 1);
}
listRows.add(rowinfo);
}
вернуть список строк;
}
public void update (String sql, ArrayList list_values) выдает Throwable {
подготовленныйStatement = Connection.prepareStatement(sql);
for (int i = 0; i < list_values.size(); i++) {
подготовленныйStatement.setObject(i + 1, list_values.get(i));
}
подготовленныйStatement.executeUpdate();
подготовленноеStatement.close();
}
}
Формат сервлета:
复制代码代码如下:
контроллер пакета;
импортировать java.io.IOException;
импортировать java.io.PrintWriter;
импортировать java.util.List;
импортировать javax.servlet.ServletException;
импортировать javax.servlet.http.HttpServlet;
импортировать javax.servlet.http.HttpServletRequest;
импортировать javax.servlet.http.HttpServletResponse;
импортировать webTools.IOTOWeb;
публичный класс TestURL расширяет HttpServlet {
/**
* Конструктор объекта.
*/
общественный TestURL() {
супер();
}
/**
* Уничтожение сервлета. <br>
*/
общественный недействительный уничтожить () {
супер.уничтожить(); // Просто помещаем строку "уничтожить" в журнал
// Поместите сюда свой код
}
/**
* Метод сервлета doGet. <br>
*
* Этот метод вызывается, когда в форме метод значения тега равен get.
*
* запрос @param
* запрос, отправленный клиентом на сервер
* ответ @param
* ответ, отправленный сервером клиенту
* @throws ServletException
* если произошла ошибка
* @выбрасывает исключение IOException
* если произошла ошибка
*/
public void doGet (запрос HttpServletRequest, ответ HttpServletResponse)
выдает ServletException, IOException {
пытаться {
IOTOWeb iotoWeb = новый IOTOWeb();
iotoWeb.getFromBaiduMap3("http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2");
} catch (Throwable e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
/**
* Метод doPost сервлета. <br>
*
* Этот метод вызывается, когда в форме метод значения тега равен
* почта.
*
* запрос @param
* запрос, отправленный клиентом на сервер
* ответ @param
* ответ, отправленный сервером клиенту
* @throws ServletException
* если произошла ошибка
* @выбрасывает исключение IOException
* если произошла ошибка
*/
public void doPost (запрос HttpServletRequest, ответ HttpServletResponse)
выдает ServletException, IOException {
response.setContentType("текст/html");
PrintWriter out = response.getWriter();
вне
.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>Сервлет</TITLE></HEAD>");
out.println(" <ТЕЛО>");
out.print("Это ");
out.print(this.getClass());
out.println(", используя метод POST");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
выход.закрыть();
}
/**
* Инициализация сервлета. <br>
*
* @throws ServletException
* если произошла ошибка
*/
public void init() выдает ServletException {
// Поместите сюда свой код
}
}
获取金书网的图书名:
复制代码代码如下:
пакет веб-инструментов;
импортировать java.io.BufferedReader;
импортировать java.io.InputStreamReader;
импортировать java.net.URL;
импортировать java.util.ArrayList;
импортировать java.util.List;
импортировать java.util.regex.Matcher;
импортировать java.util.regex.Pattern;
импортировать dbTools.DBTools;
публичный класс GetBook {
public String getHtmlContent(String htmlURL) бросает Throwable {
URL-адрес = ноль;
Строка rowContent = "";
StringBuffer htmlContent = новый StringBuffer();
URL = новый URL (htmlURL);
BufferedReader in = новый BufferedReader (новый InputStreamReader (url
.openStream(), "gb2312");
while ((rowContent = in.readLine()) != null) {
htmlContent.append(rowContent);
}
в.закрыть();
вернуть htmlContent.toString();
}
общественная строка getBookName (String htmlContent) {
Строка bookName = "";
Строковое регулярное выражение = "<span class=/"style15/">[^>]*</span>";
Шаблон шаблона = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = шаблон.matcher(htmlContent);
если (matcher.find()) {
bookName = matcher.group();
}
вернуть имя книги;
}
общественная строка outTag (окончательная строка s) {
return s.replaceAll("<.*?>", "");
}
DBTools dbtools = новый DBTools();
public void getFromJINSHU(String htmlURL) бросает Throwable {
Строка htmlContent = getHtmlContent(htmlURL);
Строка bookName = outTag(getBookName(htmlContent));
if (bookName != null && !").equals(bookName)) {
System.out.println(имя книги);
String sql = "вставить в значения bookinfo(bookName)(?)";
ArrayList list_values = новый ArrayList();
list_values.add(имя книги);
dbtools.update(sql, list_values);
}
}
}
Сервер сервлета:
复制代码代码如下:
контроллер пакета;
импортировать java.io.IOException;
импортировать java.io.PrintWriter;
импортировать javax.servlet.ServletException;
импортировать javax.servlet.http.HttpServlet;
импортировать javax.servlet.http.HttpServletRequest;
импортировать javax.servlet.http.HttpServletResponse;
импортировать webTools.GetBook;
общедоступный класс TestBook расширяет HttpServlet {
/**
* Конструктор объекта.
*/
публичная Тестовая Книга() {
супер();
}
/**
* Уничтожение сервлета. <br>
*/
общественный недействительный уничтожить () {
супер.уничтожить(); // Просто помещаем строку "уничтожить" в журнал
// Поместите сюда свой код
}
/**
* Метод сервлета doGet. <br>
*
* Этот метод вызывается, когда в форме метод значения тега равен get.
*
* запрос @param
* запрос, отправленный клиентом на сервер
* Ответ @param
* ответ, отправленный сервером клиенту
* @throws ServletException
* если произошла ошибка
* @выбрасывает исключение IOException
* если произошла ошибка
*/
интервал я = 1;
public void doGet (запрос HttpServletRequest, ответ HttpServletResponse)
выдает ServletException, IOException {
GetBook bookinfo = новая GetBook();
для (; я <10000; я++) {
Строка bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
пытаться {
bookinfo.getFromJINSHU(bookURL);
} catch (Throwable e) {
я++;
doPost (запрос, ответ);
}
}
}
/**
* Метод doPost сервлета. <br>
*
* Этот метод вызывается, когда в форме метод значения тега равен
* почта.
*
* запрос @param
* запрос, отправленный клиентом на сервер
* ответ @param
* ответ, отправленный сервером клиенту
* @throws ServletException
* если произошла ошибка
* @выбрасывает исключение IOException
* если произошла ошибка
*/
public void doPost (запрос HttpServletRequest, ответ HttpServletResponse)
выдает ServletException, IOException {
GetBook bookinfo = новая GetBook();
для (; я <10000; я++) {
Строка bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
пытаться {
bookinfo.getFromJINSHU(bookURL);
} catch (Throwable e) {
я++;
doGet (запрос, ответ);
}
}
}
/**
* Инициализация сервлета. <br>
*
* @throws ServletException
* если произошла ошибка
*/
public void init() выдает ServletException {
// Поместите сюда свой код
}
}
每种功能的实现方法有很多, 希望各位可以交流不同的思想和方法。可以加QQ412546724。呵呵