Jsoup爬数据+设置代理IP
2016-08-13 00:25
141 查看
本文利用Jsoup工具从网站中爬IP,然后动态改变本地IP进行远程访问。
主要工作类:
自定义线程类:
文件操作类:
主要工作类:
public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub parse(); } public static void parse() { // blogBody(""); List<String> list = null; try { list = getHtml(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String path = "/Users/tianjia/Documents/article"; List<String> articles = FileUtil.getListFromFile(path); ExecutorService executorService = Executors.newCachedThreadPool(); int len_article = articles.size(); for (int i = 0; i < len_article; i++) { executorService.execute(new MyRun(articles.get(i), list)); } } private static List<String> getHtml() throws IOException { Document doc = null; try { // doc = Jsoup.connect("http://www.baidu.com") doc = Jsoup.connect("http://www.xicidaili.com/nt") // .data("query", "Java") .userAgent("Mozilla") // .cookie("auth", "token") // .timeout(3000) .get(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } List<String> list = new ArrayList<String>(); Elements elements = doc.select("tr.odd"); int len = elements.size(); Element element = null; for (int i = 0; i < len; i++) { element = elements.get(i); StringBuilder sBuilder = new StringBuilder(20); sBuilder.append(element.child(1).text()); sBuilder.append(":"); sBuilder.append(element.child(2).text()); list.add(sBuilder.toString()); } // System.out.println(doc.html()); doc = null; elements.clear(); elements = null; return list; } public static void visit(String ip, String url){ // prop.setProperty("http.proxyHost", "183.45.78.31"); // 设置http访问要使用的代理服务器的端口 // prop.setProperty("http.proxyPort", "8080"); String[] r = ip.split(":"); System.getProperties().setProperty("http.proxyHost", r[0]); System.getProperties().setProperty("http.proxyPort", r[1]); try { // doc = Jsoup.connect("http://www.baidu.com") Jsoup.connect(url) // .data("query", "Java") .userAgent("Mozilla") // .cookie("auth", "token") // .timeout(3000) .get(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
自定义线程类:
public class MyRun implements Runnable{ private List<String> list; private String urlString; public MyRun(String url,List<String> list) { this.list = list; this.urlString = url; } @Override public void run() { // TODO Auto-generated method stub int len = list.size(); for (int i = 0; i < len; i++) { Test.visit(list.get(i), urlString); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
文件操作类:
public class FileUtil { public static List<String> getListFromFile(String path){ List<String> list = new ArrayList<>(); String data = null; try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path))); while((data = br.readLine())!=null) { System.out.println(data); list.add(data); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } }
相关文章推荐
- Jsoup 设置代理IP
- 设置代理IP 设置完成后可发送抓取数据的请求
- 轻松切换IP及IE代理设置
- 批处理:自升级+程序升级,根据MAC更改IP+IE代理自动设置
- c#百度排名点击器编写,设置代理ip
- java模拟http的Get/Post请求,并设置ip与port代理
- 【使用JSOUP实现网络爬虫】修改数据-设置元素的文本内容
- 轻松切换IP及IE代理设置
- 爬虫代理ip设置
- Android模拟器代理设置、ip设置
- idhttp 在delphi7下如何设置代理IP和Port
- 防恶意解析,禁止用IP访问网站的Apache设置+如何阻止网站被恶意反向代理访问
- 批处理、VBS实现自动设置IP、默认网关、DNS、WINS、IE代理!(一)
- 批处理、VBS实现自动设置IP、默认网关、DNS、WINS、IE代理!
- WebBrowser代理设置,可以根据IP,线程ID等设置代理,实现了多WebBrowser同时使用不同代理
- 设置IP和代理,dns的Windows Bat脚本
- 怎么样设置代理IP
- VC 设置代理IP
- idhttp 在delphi7下如何设置代理IP和Port
- 【使用JSOUP实现网络爬虫】修改数据-设置属性的值