静态代理业务场景
这天你早早地到了公司,打开电脑准备写代码,组里突然给你下发了一个任务,由于 java 后台组这几天有点缺人,临时需要你帮个忙,让你做一个 百度网站的爬虫,虽然你满肚子不情愿,但是又没有办法,谁让你是一个小全栈呢~
幸运的是,等你来到后台组的时候,后台的大佬告诉你基本的框架已经搭建好了,你只需要完成网页爬取的代码就行了,于是你啪啪啪打起键盘写下了如下的代码 ——
1.首先创建一个爬虫接口:
public interface Spider {
void spider() throws IOException;
}
2.再是各个类:
public class JavaSpider implements Spider {
private final String URL = "http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=92751549_hao_pg&wd=JAVA&oq=%25E5%258A%25A8%25E6%2580%2581%25E4%25BB%25A3%25E7%2590%2586%25E7%2594%259F%25E6%2588%2590%25E7%25B1%25BB%25E5%259C%25A8%25E5%2593%25AA%25E9%2587%258C&rsv_pq=ff31a7ae0006648a&rsv_t=3c2aOlwowmM8l8mE7hifw23DGvHmskmk4d9%2BbGw%2BmtCDL%2Ftwh2IqdiK85K07EXK8z5Z7IXOF&rqlang=cn&rsv_enter=1&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&inputT=1149&rsv_sug4=1149";
@Override
public void spider() throws IOException {
HttpURLConnection connection = HTTPUtil.connection(URL);
InputStream stream = connection.getInputStream();
// 对网页的操作
if (stream != null) {
// 爬取各个 html 标签下的内容
byte[] buffer = new byte[1024];
int read = 0;
while ((read = stream.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, read));
}
}
// 插入数据到数据库中
insert2Database();
}
private void insert2Database() {
// 模拟插入数据库
System.out.println(getClass().getName() + ": 已插入数据库\n========================");
}
}
完毕!但你收拾正要起身的时候,突然又被后台组的老大叫住了——“我去,小超你就写完了?速度可以啊,不过我看你也不是很忙,继续帮我把其他7个子界面一起爬了吧,公司都要这些数据呢。”虽然你此时此刻想和这个后台组的老大单挑一波,但是最终还是忍住了,写写爬虫也不是很耗脑子的事情,那就继续写吧,代码如下 ——
public class AndroidSpider implements Spider {
private final String URL = "http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=92751549_hao_pg&wd=Android&oq=JAVA&rsv_pq=d0b52cbe0003764e&rsv_t=41f18noX9t6D9n050OkCQLVTUNkKMtmZBwI4%2FpcyiEue4dfGWNK6kQzCvcdLchSNfMO25viL&rqlang=cn&rsv_enter=1&inputT=2310&rsv_sug3=11&rsv_sug1=9&rsv_sug7=100&rsv_sug2=0&rsv_sug4=2310";
@Override
public void spider() throws IOException {
HttpURLConnection connection = HTTPUtil.connection(URL);
InputStream stream = connection.getInputStream();
// 对网页的操作
if (stream != null) {
// 爬取各个 html 标签下的内容
byte[] buffer = new byte[1024];
int read = 0;
while ((read = stream.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, read));
}
}
// 插入数据到数据库中
insert2Database();
}
private void insert2Database() {
// 模拟插入数据库
System.out.println(getClass().getName() + ": 已插入数据库\n========================");
}
}
public class OkHttpSpider implements Spider {
private final String URL = "http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=92751549_hao_pg&wd=OKHTTP&oq=Android&rsv_pq=974ab7