项目的目录结构

核心源码:

package cn.edu.zyt.spider;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; import cn.edu.zyt.spider.model.SpiderParams;
import cn.edu.zyt.spider.queue.UrlQueue;
import cn.edu.zyt.spider.worker.SpiderWorker; public class SpiderStarter { public static void main(String[] args){ System.setProperty("java.net.useSystemProxies", "true");
System.setProperty("http.proxyHost", "113.128.9.37");
System.setProperty("http.proxyPort", "9999");
System.setProperty("https.proxyHost", "113.128.9.37");
System.setProperty("https.proxyPort", "9999"); // 初始化配置参数
initializeParams(); // 初始化爬取队列
initializeQueue(); // 创建worker线程并启动
for(int i = 1; i <= SpiderParams.WORKER_NUM; i++){
new Thread(new SpiderWorker(i)).start();
}
} /**
* 初始化配置文件参数
*/
private static void initializeParams(){
InputStream in;
try {
in = new BufferedInputStream(new FileInputStream("conf/spider.properties"));
Properties properties = new Properties();
properties.load(in); // 从配置文件中读取参数
SpiderParams.WORKER_NUM = Integer.parseInt(properties.getProperty("spider.threadNum"));
SpiderParams.DEYLAY_TIME = Integer.parseInt(properties.getProperty("spider.fetchDelay")); in.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
} /**
* 准备初始的爬取链接
*/
private static void initializeQueue(){
// 例如,需要抓取天下粮仓信息,根据链接规则生成URLs放入带抓取队列http://www.cofeed.com/national_1.html for(int i = 0; i < 3; i += 1){
UrlQueue.addElement("http://www.cofeed.com/national_" + i+".html");
}
}
}

实现效果图:

由于页面代码较多就不一一粘贴了,获取完整源码可在博客下方留言哈

java实现多线程使用多个代理ip的方式爬取网页页面内容的更多相关文章

  1. Java中使用多线程、curl及代理IP模拟post提交和get访问

    Java中使用多线程.curl及代理IP模拟post提交和get访问 菜鸟,多线程好玩就写着玩,大神可以路过指教,小弟在这受教,谢谢! 更多分享请关注微信公众号:lvxing1788 ~~~~~~ 分 ...

  2. Java中使用多线程、curl及代理IP模拟post提交和get訪问

    Java中使用多线程.curl及代理IP模拟post提交和get訪问 菜鸟,多线程好玩就写着玩.大神能够路过不吝赐教.小弟在这受教.谢谢! 很多其它分享请关注微信公众号:lvxing1788 ~~~~ ...

  3. 使用Selenium&PhantomJS的方式爬取代理

    前面已经爬取了代理,今天我们使用Selenium&PhantomJS的方式爬取快代理 :快代理 - 高速http代理ip每天更新. 首先分析一下快代理,如下 使用谷歌浏览器,检查,发现每个代理 ...

  4. Java两种方式简单实现:爬取网页并且保存

    注:如果代码中有冗余,错误或者不规范,欢迎指正. Java简单实现:爬取网页并且保存 对于网络,我一直处于好奇的态度.以前一直想着写个爬虫,但是一拖再拖,懒得实现,感觉这是一个很麻烦的事情,出现个小错 ...

  5. java爬虫-简单爬取网页图片

    刚刚接触到“爬虫”这个词的时候是在大一,那时候什么都不明白,但知道了百度.谷歌他们的搜索引擎就是个爬虫. 现在大二.再次燃起对爬虫的热爱,查阅资料,知道常用java.python语言编程,这次我选择了 ...

  6. php 使用代理IP进行数据抓取

    什么是代理?什么情况下会用到代理IP?代理服务器(Proxy Server),其功能就是代用户去取得网络信息,然后返回给用户.形象的说:它是网络信息的中转站.通过代理IP访问目标站,可以隐藏用户的真实 ...

  7. 如何使用代理IP进行数据抓取,PHP爬虫抓取亚马逊商品数据

    什么是代理?什么情况下会用到代理IP? 代理服务器(Proxy Server),其功能就是代用户去取得网络信息,然后返回给用户.形象的说:它是网络信息的中转站.通过代理IP访问目标站,可以隐藏用户的真 ...

  8. 一个简单java爬虫爬取网页中邮箱并保存

    此代码为一十分简单网络爬虫,仅供娱乐之用. java代码如下: package tool; import java.io.BufferedReader; import java.io.File; im ...

  9. python多线程与多进程--存活主机ping扫描以及爬取股票价格

    python多线程与多进程 多线程: 案例:扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活) 普通版本: #扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活)im ...

随机推荐

  1. VS2012发布网站详细步骤问题

    http://blog.csdn.net/mrobama/article/details/43118387

  2. Win 10中使用图片查看器

    在Win10中,照片应用提供了时间线.专辑等更丰富的图片管理功能,但是对于基于文件夹打开浏览图片的方式显得笨拙, 放大缩小操作略繁琐,有时还会出现当前文件夹图片加载迟缓导致无法快速浏览的问题. 此时你 ...

  3. docker load 镜像时出现:open /var/lib/docker/tmp/docker-import-500852078/repositories: no such file or dir

    网上下载了一些镜像的压缩包,使用docker load的时候会出现如下错误: open /var/lib/docker/tmp/docker-import-500852078/repositories ...

  4. 帆软报表(finereport)实现自动滚屏效果

    例如Demo:IOS平台年度数据报表. 展示内容丰富,一个页面中存在多个图表.内容,超出了浏览器窗口的大小导致内容展示不全. 为了能够预览这个报表的全部内容,可以使用JS滚屏效果来实现. 操作步骤: ...

  5. 通过 iis或者本地IP 调试代码

    首先说下这个操作的意义,做微信开发每次需要将代码部署后才能调试.现在设置了Nginx服务器,生产环境可以指向正式服务器地址,调试时可以将Nginx指向自己的PC,但是vs调试启动的默认地址是[loca ...

  6. oh-my-zsh: 让终端飞

    上一次推文写了JupyterLab:程序员的笔记本神器,介绍的是如何在web端打造一个便捷的开发环境,发出后反响还不错 因此我决定再写几篇能提升程序员工作以及学习效率的文章,如果能形成一个系列那是最好 ...

  7. C#学习-查询表达式

    查询表达式必须以from子句开头,并且必须以select或group子句结尾 在第一个from子句和最后一个select或group子句之间,可以包含一个或多个where子句.orderby.join ...

  8. CYJian的新春虐题赛

    题解: t1: 算了一下发现乘法也是可以莫比乌斯反演的 然后就直接对原式莫比乌斯反演了 大概加法是$\mu {(i)}*f(i)$ 乘法就是$f(i)^{\mu {(i)}}$ 然后这个算法成功达到$ ...

  9. JS ArrayBuffer和String

    http://blog.mn886.net/chenjianhua/show/6b02fa4173ed/index.html ArrayBuffer和String 互相转换 function str2 ...

  10. LOJ#3048. 「十二省联考 2019」异或粽子 Trie

    原文链接www.cnblogs.com/zhouzhendong/p/LOJ3048.html 题解 $O(n\log^2 {a_i})$ 的做法比较简单: 1. 求出第 k 大的是什么: 二分答案, ...