获取百度的歌曲名,歌手和链接!!
复制代码代码如下:
Paket webTools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
java.net.URL importieren;
import java.util.ArrayList;
import java.util.HashMap;
java.util.List importieren;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
dbTools.DBTools importieren;
öffentliche Klasse IOTOWeb {
public String getHtmlContent(String htmlURL) {
URL-URL = null;
String rowContent = "";
StringBuffer htmlContent = new StringBuffer();
versuchen {
URL = neue URL(htmlURL);
BufferedReader in = new BufferedReader(new InputStreamReader(url
.openStream(), "gb2312"));
while ((rowContent = in.readLine()) != null) {
htmlContent.append(rowContent);
}
in.close();
} Catch (MalformedURLException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
} Catch (UnsupportedEncodingException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
} Catch (IOException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
return htmlContent.toString();
}
öffentliche Liste getLink(String htmlContent) {
ArrayList listLink = new ArrayList();
String regex = "<td[^>]*>[//(]*<a[^>]*href=(/"([^/"]*)/"|/'([^/']* )/'|([^//s>]*))[^>]*>(.*?)[//)]*[//s]*</td>";
Mustermuster = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(htmlContent);
while (matcher.find()) {
listLink.add(matcher.group());
}
return listLink;
}
public List<String> getHref(String htmlContent) {
String-Regex;
Liste listtHref = new ArrayList();
regex = "href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>]*))/"";
Muster pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
while (ma.find()) {
listtHref.add(ma.group().replaceFirst("href=/"", "").replace("/"",
""));
}
return listtHref;
}
public List<String> getPerson(String htmlContent) {
String-Regex;
Liste list = new ArrayList();
regex = "//(<a[^>]*href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>] *))[^>]*>(.*?)//)";
Muster pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
while (ma.find()) {
list.add(ma.group().replaceFirst("href=/"", "").replace("/"", ""));
}
Rückgabeliste;
}
public List<String> getSongName(String htmlContent) {
String-Regex;
Liste listPerson = new ArrayList();
regex = "<a[^>]*href=(/"([^/"]*)/"|/'([^/']*)/'|([^//s>]*)) [^>]*>(.*?)</a>//s";
Muster pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
while (ma.find()) {
listPerson.add(ma.group());
}
return listPerson;
}
public String getMainContent(String htmlContent) {
String regex = "<table width=/"100%/" align=/"center/" cellpadding=/"0/" cellpacing=/"0/" class=/"list/">(.*?)</ Tabelle>";
StringBuffer mainContent = new StringBuffer();
Mustermuster = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(htmlContent);
while (matcher.find()) {
mainContent.append(matcher.group());
}
return mainContent.toString();
}
public String outTag(final String s) {
return s.replaceAll("<.*?>", "");
}
DBTools dbTools = new DBTools();
public void getFromBaiduMap3(String htmlURL) throws Throwable {
HashMap htmlContentMap = new HashMap();
String htmlContent = getHtmlContent(htmlURL);
String mainContent = getMainContent(htmlContent);
Liste listLink = getLink(mainContent);
for (int j = 0; j < listLink.size(); j++) {
String tdTag = listLink.get(j).toString();
Liste songNameList = getSongName(tdTag);
String songName = outTag(songNameList.get(0).toString());
Liste personList = getPerson(tdTag);
StreichliedPerson = "";
if (personList.size() != 0) {
for (int n = 0; n < personList.size(); n++) {
// System.out.println(personList.get(n).toString());
songPerson = outTag(personList.get(n).toString());
}
} anders {
songPerson = "无";
}
// System.out.print(songNameList.get(0).toString());
Liste hrefList = getHref(songNameList.get(0).toString());
String songHref = hrefList.get(0).toString();
System.out.println();
String sql = "insert into song(songName,songPerson,songHref) Values(?,?,?)";
ArrayList list_values = new ArrayList();
list_values.add(songName);
list_values.add(songPerson);
list_values.add(songHref);
dbTools.update(sql, list_values);
}
}
}
DBTools-Funktion:
复制代码代码如下:
Paket dbTools;
import java.util.ArrayList;
java.sql.* importieren;
öffentliche Klasse DBTools {
private PreparedStatement PreparedStatement;
privates ResultSet resultSet;
private Verbindungsverbindung;
public DBTools() {
versuchen {
Class.forName("com.mysql.jdbc.Driver");
} Catch (ClassNotFoundException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
versuchen {
Verbindung = DriverManager.getConnection(
„jdbc:mysql://localhost:3306/TestURL“, „root“, „zhuyi“);
} Catch (SQLException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}
öffentliche ArrayList-Abfrage (String sql, ArrayList list_values) löst Throwable { aus
ArrayList listRows = new ArrayList();
vorbereitetStatement = Connection.prepareStatement(sql);
for (int i = 0; i < list_values.size(); i++) {
vorbereitetStatement.setObject(i + 1, list_values.get(i));
}
resultSet = vorbereitetStatement.executeQuery();
while (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);
}
return listRows;
}
public void update(String sql, ArrayList list_values) throws Throwable {
vorbereitetStatement = Connection.prepareStatement(sql);
for (int i = 0; i < list_values.size(); i++) {
vorbereitetStatement.setObject(i + 1, list_values.get(i));
}
vorbereitetStatement.executeUpdate();
vorbereitetStatement.close();
}
}
Beschreibung des Servlets:
复制代码代码如下:
Paketcontroller;
import java.io.IOException;
import java.io.PrintWriter;
java.util.List importieren;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import webTools.IOTOWeb;
Die öffentliche Klasse TestURL erweitert HttpServlet {
/**
* Konstruktor des Objekts.
*/
öffentliche TestURL() {
super();
}
/**
* Zerstörung des Servlets. <br>
*/
public void destroy() {
super.destroy(); // Fügt einfach die Zeichenfolge „destroy“ in das Protokoll ein
// Geben Sie hier Ihren Code ein
}
/**
* Die doGet-Methode des Servlets. <br>
*
* Diese Methode wird aufgerufen, wenn die Tag-Wert-Methode eines Formulars gleich get ist.
*
* @param-Anfrage
* die vom Client an den Server gesendete Anfrage
* @param-Antwort
* die vom Server an den Client gesendete Antwort
* @throws ServletException
* wenn ein Fehler aufgetreten ist
* @throws IOException
* wenn ein Fehler aufgetreten ist
*/
public void doGet(HttpServletRequest-Anfrage, HttpServletResponse-Antwort)
wirft ServletException, IOException {
versuchen {
IOTOWeb iotoWeb = new IOTOWeb();
iotoWeb.getFromBaiduMap3("http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2");
} Catch (Throwable e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}
/**
* Die doPost-Methode des Servlets. <br>
*
* Diese Methode wird aufgerufen, wenn die Tag-Wert-Methode eines Formulars gleich ist
* Post.
*
* @param-Anfrage
* die vom Client an den Server gesendete Anfrage
* @param-Antwort
* die vom Server an den Client gesendete Antwort
* @throws ServletException
* wenn ein Fehler aufgetreten ist
* @throws IOException
* wenn ein Fehler aufgetreten ist
*/
public void doPost(HttpServletRequest-Anfrage, HttpServletResponse-Antwort)
wirft ServletException, IOException {
Response.setContentType("text/html");
PrintWriter out = Response.getWriter();
aus
.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>Ein Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" Das ist ");
out.print(this.getClass());
out.println(", mit der POST-Methode");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* Initialisierung des Servlets. <br>
*
* @throws ServletException
* wenn ein Fehler auftritt
*/
public void init() löst eine ServletException { aus
// Geben Sie hier Ihren Code ein
}
}
获取金书网的图书名:
复制代码代码如下:
Paket webTools;
import java.io.BufferedReader;
import java.io.InputStreamReader;
java.net.URL importieren;
import java.util.ArrayList;
java.util.List importieren;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
dbTools.DBTools importieren;
öffentliche Klasse GetBook {
public String getHtmlContent(String htmlURL) throws Throwable {
URL-URL = null;
String rowContent = "";
StringBuffer htmlContent = new StringBuffer();
URL = neue URL(htmlURL);
BufferedReader in = new BufferedReader(new InputStreamReader(url
.openStream(), "gb2312"));
while ((rowContent = in.readLine()) != null) {
htmlContent.append(rowContent);
}
in.close();
return htmlContent.toString();
}
public String getBookName(String htmlContent) {
String bookName = "";
String regex = "<span class=/"style15/">[^>]*</span>";
Mustermuster = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(htmlContent);
if (matcher.find()) {
bookName = matcher.group();
}
return Buchname;
}
public String outTag(final String s) {
return s.replaceAll("<.*?>", "");
}
DBTools dbtools = new DBTools();
public void getFromJINSHU(String htmlURL) throws Throwable {
String htmlContent = getHtmlContent(htmlURL);
String bookName = outTag(getBookName(htmlContent));
if (bookName != null && !"".equals(bookName)) {
System.out.println(bookName);
String sql = "in bookinfo(bookName)-Werte(?) einfügen";
ArrayList list_values = new ArrayList();
list_values.add(bookName);
dbtools.update(sql, list_values);
}
}
}
Servlet-Beschreibung:
复制代码代码如下:
Paketcontroller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
webTools.GetBook importieren;
Die öffentliche Klasse TestBook erweitert HttpServlet {
/**
* Konstruktor des Objekts.
*/
öffentliches TestBook() {
super();
}
/**
* Zerstörung des Servlets. <br>
*/
public void destroy() {
super.destroy(); // Fügt einfach die Zeichenfolge „destroy“ in das Protokoll ein
// Geben Sie hier Ihren Code ein
}
/**
* Die doGet-Methode des Servlets. <br>
*
* Diese Methode wird aufgerufen, wenn die Tag-Wert-Methode eines Formulars gleich get ist.
*
* @param-Anfrage
* die vom Client an den Server gesendete Anfrage
* @param-Antwort
* die vom Server an den Client gesendete Antwort
* @throws ServletException
* wenn ein Fehler aufgetreten ist
* @throws IOException
* wenn ein Fehler aufgetreten ist
*/
int i = 1;
public void doGet(HttpServletRequest-Anfrage, HttpServletResponse-Antwort)
wirft ServletException, IOException {
GetBook bookinfo = new GetBook();
für (; i < 10000; i++) {
String bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
versuchen {
bookinfo.getFromJINSHU(bookURL);
} Catch (Throwable e) {
i++;
doPost(Anfrage, Antwort);
}
}
}
/**
* Die doPost-Methode des Servlets. <br>
*
* Diese Methode wird aufgerufen, wenn die Tag-Wert-Methode eines Formulars gleich ist
* Post.
*
* @param-Anfrage
* die vom Client an den Server gesendete Anfrage
* @param-Antwort
* die vom Server an den Client gesendete Antwort
* @throws ServletException
* wenn ein Fehler aufgetreten ist
* @throws IOException
* wenn ein Fehler aufgetreten ist
*/
public void doPost(HttpServletRequest-Anfrage, HttpServletResponse-Antwort)
wirft ServletException, IOException {
GetBook bookinfo = new GetBook();
für (; i < 10000; i++) {
String bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
versuchen {
bookinfo.getFromJINSHU(bookURL);
} Catch (Throwable e) {
i++;
doGet(Anfrage, Antwort);
}
}
}
/**
* Initialisierung des Servlets. <br>
*
* @throws ServletException
* wenn ein Fehler auftritt
*/
public void init() löst eine ServletException { aus
// Geben Sie hier Ihren Code ein
}
}
每种功能的实现方法有很多, 希望各位可以交流不同的思想和方法.可以加QQ412546724。呵呵