代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
用于抓取百度搜索到的第一个网站的源码
作者:
Staryong
/ 发布于
2013/11/28
/
664
import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.codec.binary.StringUtils; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import java.io.File; import java.io.IOException; import java.sql.Timestamp; import java.lang.*; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.awt.*; import javax.swing.JFrame; public class CatchTestApp { private final static HttpClient httpClient = new DefaultHttpClient(); /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try{ System.out.println("输入你的要抓取的网页名称:"); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s = in.readLine(); String keyWord = s; String url = LocateURL(keyWord); String charset = LocateCharSet(url); System.out.println("显示抓取到的页面编码方式:"+charset); CatchWeb(url,keyWord,charset); }catch(IOException e){ e.printStackTrace(); } } //定位百度搜索到的第一条网站URL方法 public static String LocateURL(String keyword){ //设置百度查询的结果 String threadUrl ="http://www.baidu.com/s?wd="+keyword; try{ Document doc = (Document)Jsoup.connect(threadUrl).get(); //用Document记录页面信息 //System.out.println(doc); //定位到一条网站URL for(Element ele : doc.getElementById("1").select("tbody > tr")){ if(!ele.select("td").toString().equals("")){ String url = ele.select("td").get(0).select("a").attr("href"); System.out.println("显示抓取到的页面URL:"+url); threadUrl = url; } } }catch(IOException e){ e.printStackTrace(); } return threadUrl; } //获取所要抓取网页的编码方式 public static String LocateCharSet(String url){ String sub = "utf-8"; String s = ""; String t="text"; try{ Document doc = Jsoup.connect(url).get(); //判断编码方式 Elements eles = doc.getElementsByTag("head").select("meta[http-equiv]"); for(Element ele :eles){ if(ele.attr("http-equiv").equals("Content-Type")|| ele.attr("http-equiv").equals("Content-type")|| ele.attr("http-equiv").equals("content-type")|| ele.attr("http-equiv").equals("content-Type")){ String[] str = ele.attr("content").split("[=]"); sub = str[1]; } } //判断编码方式所在 (不要用这个方法,不好) // for(int i=0 ; s.equals(t)!= true ; i++){ // String charSet = doc.getElementsByTag("head").select("meta[http-equiv]").get(i).attr("content"); // s=charSet.substring(0,t.length()); // String[] str = charSet.split("[=]"); // sub = str[1]; // } }catch(IOException e){ e.printStackTrace(); } return sub; } private static Document parseJSoupDocumentFromHtml(String url) { // TODO Auto-generated method stub return null; } //抓取网页全部内容方法 @SuppressWarnings("deprecation") public static void CatchWeb(String url,String keyword,String charset){ try{ HttpGet httpget = new HttpGet(url);// Get请求 HttpResponse httpresponse = httpClient.execute(httpget); // 发送请求 HttpEntity entity = httpresponse.getEntity();// 获取返回数据 String chars = EntityUtils.getContentCharSet(entity); System.out.println("charset:"+charset); if(chars != null){ charset = chars; } System.out.println("chars:"+chars); String info =EntityUtils.toString(entity, charset); System.out.println("显示响应信息状态:"+httpresponse.getStatusLine()); System.out.println(info); File(info,keyword,charset); }catch(ParseException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } } //将抓取的页面信息输出到txt文档 public static void File(String info,String keyword,String charset){ File file = new File("D:/抓获网页源码库/"+keyword+"网页源码.txt"); try{ FileOutputStream out = new FileOutputStream(file); byte b[]= info.getBytes(charset); System.out.println("数据正在写入文本文档中......"); out.write(b); out.close(); System.out.println("数据保存成功!"); }catch(Exception e){ e.printStackTrace(); } } }
试试其它关键字
搜索源码
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Staryong
贡献的其它代码
(
3
)
.
拷贝eclipse中maven引用jar文件
.
Android圆角图片封装类
.
用于抓取百度搜索到的第一个网站的源码
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3