package web_search;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* 我就是不写注释!
*
* @author Administrator
*
*/
public class HtmlDownloader {
public static void main(String[] args) {
System.out
.println(down("http://www.baidu.com/s?wd=runtime.exec%20%B5%C8%B4%FD%CD%CB%B3%F6&pn=90&tn=monline_4_dg"));
}
public static String down(String u) {
return new Helper().fuck(u);
}
}
class Helper {
public String fuck(String u) {
String[] p = new String[2];
p[0] = u;
p[1] = "";
Thread thread = new T(p);
thread.start();
synchronized (this) {
try {
int count = 100;
while (count-- > 0) {
this.wait(100);
if (!thread.isAlive())
break;
}
} catch (Exception e) {
}
if (thread.isAlive())
thread.interrupt();
}
return p[1];
}
}
class T extends Thread {
static String user_agent_str = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0";
String[] l;
public T(String[] p) {
l = p;
}
public void run() {
String fu = l[0];
try {
StringBuilder ret = new StringBuilder();
int HttpResult;
URL url = new URL(fu);
HttpURLConnection urlconn = (HttpURLConnection) url
.openConnection(); // ������
// URLConnection
// ��������ij��࣬����Ӧ�ó����
// URL
// ֮���ͨ�����ӣ�ͨ����
// URL
// �ϵ���
// openConnection
// �����������Ӷ���
//urlconn.addRequestProperty("Accept-Language", "zh-cn");
urlconn.addRequestProperty("User-Agent", user_agent_str);
urlconn.setFollowRedirects(true);
urlconn.setInstanceFollowRedirects(false);
urlconn.connect(); // ʹ�� connect ����������Զ�̶����ʵ������
HttpURLConnection httpconn = (HttpURLConnection) urlconn; // ÿ��
// HttpURLConnection
// ʵ���������ɵ�������������ʵ��������ع������ӵ�
// HTTP
// �������Ļ�����
// HttpResult = httpconn.getResponseCode(); // getResponseCode���Դ�
// HTTP
// ��Ӧ��Ϣ��ȡ״̬��
while (String.valueOf(httpconn.getResponseCode()).startsWith("3")) {
String theLocation = httpconn.getHeaderField("Location");
httpconn.disconnect();
url = new URL(theLocation);
httpconn = (HttpURLConnection) url.openConnection();
httpconn.setFollowRedirects(true);
httpconn.setInstanceFollowRedirects(false);
httpconn.connect();
}
if (httpconn.getResponseCode() != HttpURLConnection.HTTP_OK) {
System.out.println("HTTP error code : " + httpconn.getResponseCode() + " from " + fu);
} else {
String charset = httpconn.getContentType();
// System.out.println(charset);
String charType = charset
.substring(charset.lastIndexOf("=") + 1);
// System.out.println(charType);
if ("text/html".equals(charType))
charType = "gbk";
InputStreamReader isr = null;
try {
isr = new InputStreamReader(httpconn.getInputStream(),
charType);
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage() + fu);
isr = new InputStreamReader(httpconn.getInputStream(),
"gbk");
}
BufferedReader in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null) {
ret.append(inputLine);
}
in.close();
}
l[1] = ret.toString();
} catch (MalformedURLException e) {
System.out.println(e.getMessage() + fu);
return;
} catch (IOException e) {
System.out.println(e.getMessage() + fu);
return;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这个程序的功能是利用常用的搜索引擎搜索关键词获得搜索结果,然后访问每个搜索结果将排在前面的所有网页的文本信息全部抓下来。 程序采用多线程(不超过20个,保证不影响其他程序)和超时设置(默认10秒),自己觉得挺好用的。 包括google网页搜索(GoogleQuery.java) baidu网页搜索(BaiduQuery.java) bing网页搜索(BingQuery.java) 三种主流搜索引擎的java调用。 其中google和baidu搜索采用http请求实现,bing使用bing java sdk实现。bing搜索需要一个微软的appid,可以用我的,也可以自己去免费申请。bing会限制每个appid的每天查询次数。 google和baidu的结果很好,bing的服务器好像常常连不上去。。。 google实现的时候尤其需要一个user-agent域,可以直接用我的firefox9.0设置也可以自己查找相应的user agent字符串替换(在HtmlDownloader.java中)。
资源推荐
资源详情
资源评论
收起资源包目录
src.7z (8个子文件)
bing-search-java-sdk.jar 76KB
web_search
BingSearcher.java 3KB
GoogleQuery.java 2KB
HtmlDownloader.java 4KB
BaiduQuery.java 2KB
BingQuery.java 918B
html_parsing
HtmlParser.java 88B
TagRemover.java 1KB
共 8 条
- 1
FelixHao
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页