获取百度的歌曲名,歌手和链接!!
复制代码 代码如下:
package webTools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import dbTools.DBTools;
public class IOTOWeb {
public String getHtmlContent(String htmlURL) {
URL url = null;
String rowContent = "";
StringBuffer htmlContent = new StringBuffer();
try {
url = new 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 Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return htmlContent.toString();
}
public List getLink(String htmlContent) {
ArrayList listLink = new ArrayList();
String regex = "<td[^>]*>[\\(]*<a[^>]*href=(\"([^\"]*)\"|\'([^\']*)\'|([^\\s>]*))[^>]*>(.*?)[\\)]*[\\s]*</td>";
Pattern pattern = 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;
List listtHref = new ArrayList();
regex = "href=(\"([^\"]*)\"|\'([^\']*)\'|([^\\s>]*))\"";
Pattern 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;
List list = new ArrayList();
regex = "\\(<a[^>]*href=(\"([^\"]*)\"|\'([^\']*)\'|([^\\s>]*))[^>]*>(.*?)\\)";
Pattern pa = Pattern.compile(regex, Pattern.DOTALL);
Matcher ma = pa.matcher(htmlContent);
while (ma.find()) {
list.add(ma.group().replaceFirst("href=\"", "").replace("\"", ""));
}
return list;
}
public List<String> getSongName(String htmlContent) {
String regex;
List listPerson = new ArrayList();
regex = "<a[^>]*href=(\"([^\"]*)\"|\'([^\']*)\'|([^\\s>]*))[^>]*>(.*?)</a>\\s";
Pattern 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\" cellspacing=\"0\" class=\"list\">(.*?)</table>";
StringBuffer mainContent = new StringBuffer();
Pattern pattern = 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);
List listLink = getLink(mainContent);
for (int j = 0; j < listLink.size(); j++) {
String tdTag = listLink.get(j).toString();
List songNameList = getSongName(tdTag);
String songName = outTag(songNameList.get(0).toString());
List personList = getPerson(tdTag);
String songPerson = "";
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());
}
} else {
songPerson = "无";
}
// System.out.print(songNameList.get(0).toString());
List 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数据库链接类:
复制代码 代码如下:
package dbTools;
import java.util.ArrayList;
import java.sql.*;
public class DBTools {
private PreparedStatement preparedStatement;
private ResultSet resultSet;
private Connection connection;
public DBTools() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/TestURL", "root", "zhuyi");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ArrayList query(String sql, ArrayList list_values) throws Throwable {
ArrayList listRows = new ArrayList();
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < list_values.size(); i++) {
preparedStatement.setObject(i + 1, list_values.get(i));
}
resultSet = preparedStatement.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 {
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < list_values.size(); i++) {
preparedStatement.setObject(i + 1, list_values.get(i));
}
preparedStatement.executeUpdate();
preparedStatement.close();
}
}
Servlet调用:
复制代码 代码如下:
package controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import webTools.IOTOWeb;
public class TestURL extends HttpServlet {
/**
* Constructor of the object.
*/
public TestURL() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
IOTOWeb iotoWeb = new IOTOWeb();
iotoWeb.getFromBaiduMap3("http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2");
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
获取金书网的图书名:
复制代码 代码如下:
package webTools;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import dbTools.DBTools;
public class GetBook {
public String getHtmlContent(String htmlURL) throws Throwable {
URL url = null;
String rowContent = "";
StringBuffer htmlContent = new StringBuffer();
url = new 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>";
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(htmlContent);
if (matcher.find()) {
bookName = matcher.group();
}
return bookName;
}
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 = "insert into bookinfo(bookName) values(?)";
ArrayList list_values = new ArrayList();
list_values.add(bookName);
dbtools.update(sql, list_values);
}
}
}
调用Servlet:
复制代码 代码如下:
package controller;
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;
import webTools.GetBook;
public class TestBook extends HttpServlet {
/**
* Constructor of the object.
*/
public TestBook() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
int i = 1;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
GetBook bookinfo = new GetBook();
for (; i < 10000; i++) {
String bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
try {
bookinfo.getFromJINSHU(bookURL);
} catch (Throwable e) {
i++;
doPost(request, response);
}
}
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
GetBook bookinfo = new GetBook();
for (; i < 10000; i++) {
String bookURL = "http://www.golden-book.com/booksinfo/12/" + i
+ ".html";
try {
bookinfo.getFromJINSHU(bookURL);
} catch (Throwable e) {
i++;
doGet(request, response);
}
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
每种功能的实现方法有很多,希望各位可以交流不同的思想和方法。可以加QQ412546724。呵呵
相关推荐:
SEO课:让你从小白变成搜索引擎优化高手,推广自媒体营销计划
Chat免费,让沟通无界限,尽享智能对话时代,ai没办法置顶
“标题制造机”:颠覆内容创作的秘密武器,助你轻松打造吸引力十足的标题,景区线上推广用哪些网站
用AI写文章,释放你的创作潜力!
ChatGPT不能加载过去的对话,如何提升你的使用体验?,ai智能衣服
ChatGPT无服务:如何突破限制,未来人工智能的新可能,ai绘制装饰画
AI+写文章:开启智能创作新时代
优化分析:提升企业效益的关键策略,山东大网站建设
整理文章的AI:提升写作效率的智能助手
为什么seo这么麻烦,seo是什么意思 为什么要做seo ,dota1ai地图命令选ai
seo链接锚是什么,什么是锚链接,如何设置锚链接 ,保山智能AI
用AI写文章:效率与创意的完美结合
seo营销方法是什么,seo营销模式 ,ai山海
seo给你什么帮助,seo的利与弊 ,ai 大厨
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
优方法-高效生活与工作的秘密武器,钻石营销推广方案
自动写文章的AI,提升效率的创作利器
SEO表述:如何通过精准优化让你的内容脱颖而出,江阴网站建设怎么样啊
软件AI的全称:人工智能驱动未来的关键力量
SEO学费多少钱?揭秘SEO培训的投资价值与回报!,郴州网站推广多少钱一个
SEO结构优化:助力网站提升排名与流量的关键策略,杭州小网站推广哪家好做
ChatGPTDNS出问题?如何快速解决并保障网络畅通,墨镜ai照片
SEO快速优化文章排名:提升网站流量的必备技巧,ai小苹果会员分享
2025年SEO最新技术:让你的网站脱颖而出!,ai少女特色
SEO获客的秘诀:如何通过搜索引擎优化提升客户获取能力,厦门seo搜索优化排名
SEO有点:揭秘优化之道,提升网站排名的秘诀,广州抖音seo厂家地址
ChatGPT崩一次多久修复?揭秘背后的技术与保障,ai1818818
京东业绩再创新高:未来电商巨头的成功之道,如何做seo优化留痕
SEO难吗?揭秘SEO背后的真相,让你轻松上手!,大旺百度网站推广
SEO关键词推广软件官网-助力企业实现高效精准的网络营销,圈圈ai
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
WPS改写-轻松提升文档创作效率的秘密武器,推广网站的优势
ChatGPT安装包Windows版:让AI助力你的工作与生活,人工智能ai不是梦在线
什么是seo技术,什么是seo及seo的作用 ,AI倒放仓鼠
ChatGPT中显示已进行一处编辑,但看不到内容?你需要了解的隐藏问题!,ai敲
OpenAI推出的GPT-4Turbo大幅降低了AI应用成本,推动了AI技术的普及化,ai*版
seo要什么条件,seo都需要做什么 ,交互ai求职
亚马逊站内seo是什么优化,亚马逊seo关键词优化软件 ,ai画卡通章鱼
seo网赚什么意思,网站seo赚钱 ,ai打不开ai
Zkept:重塑未来生活的智能科技革新,营销推广的面试问题
OpenAI银行卡扣款的公司是哪家?揭秘背后的支付流程与安全保障,AI素描相片
SEO怎么优化比较好?全面提升网站排名的实用技巧,高级ai玩家
目前AI软件有哪些?智能新时代的必备工具
ChatGPT不能用了?了解这一背后的真相及解决方法,ai恐怖头像
seo网页优化什么意思,seo网站优化必知的10个问答,问吧,【解决】百度不知道 ,ai识别点读机
自动写文章AI:高效创作工具,开启写作新纪元
SEO汇报:如何通过数据分析提升网站排名,助力企业业绩增长,免费推广网站大全百度经验
SEO收费如何选择合适的SEO服务,提升网站排名并增加曝光度,做网站优化哪家实惠
ChatGPT中文版下载,开启智能对话新体验,婚纱ai男
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化