本文章是借鉴博客:https://blog.csdn.net/jclian91/article/details/80950334  ,好了,直接看源码:

package com.getcount;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

/** 
 * @ClassName: WordNationalFlag 
 * @Description: java爬虫爬取世界国旗
 * @author lhz
 * @date 2018年7月9日 下午10:59:01 
 */
public class WordNationalFlag {

/* 发送HTTP的POST请求,获取指定国家的网页地址
* 传入参数:country(国家): String类型
*/
public static String doPost(String country){
String url = "http://country.911cha.com/";
try{
//设置网址打开链接
URL uri = new URL(url);
HttpURLConnection conn = (HttpURLConnection)uri.openConnection();

//设置post请求头和请求体,请求体的参数位国家
conn.setUseCaches(false);
conn.setRequestMethod("POST");
String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36";
conn.setRequestProperty("User-Agent", USER_AGENT);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
String postParams = String.format("q=%s", country);

//传入post请求体的参数
conn.setDoOutput(true);
OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(),"UTF-8");
osw.write(postParams);
osw.flush();
osw.close();

//获取相应结果的状态码
int code = conn.getResponseCode();
if(code == HttpURLConnection.HTTP_OK){
//将html内容解析成utf-8内容
Document doc = Jsoup.parse(conn.getInputStream(),"utf-8",url);
//刷选需要的网页内容
String page = doc.select("div.mcon").get(1).selectFirst("ul").selectFirst("li")
.selectFirst("a").attr("href");
return page;
}else{//如果响应状态码不是200,则加载失败
return "Get page failed!";
}
}catch(Exception e){
System.out.println(e.getMessage());
}
return "Get page failed!";
}

/**
* @Title: getConnection 
* @Description: getContent()函数主要实现下载指定国家的国旗
* @param     设定文件 
* @return void    返回类型 
* @throws
*/
public static void getConnection(String page){
String base_url = "http://country.911cha.com/";
String url = base_url + page; 
try{
//利用url解析网址
URL uri = new URL(url);
//url连接
URLConnection conn = uri.openConnection();
//将html内容解析成utf-8
Document doc = Jsoup.parse(conn.getInputStream(), "utf-8",url);
//刷选需要的网页内容
Element image = doc.selectFirst("img");
String flag_name = image.attr("alt").replace("国旗", "");
String flag_url = image.attr("src");
URL urls = new URL(base_url + "/" + flag_url);
// 利用FileUtils.copyURLToFile()实现图片下载
FileUtils.copyURLToFile(urls, new File("C://Users/admin/Desktop/文档/世界国旗集/"+flag_name+ ".gif"));
System.out.println("%s国旗下载成功" +":"+ flag_name);

}catch(Exception e){
e.getMessage();
}
}

/**
* @Title: readyFileByLines 
* @Description: 以每行的样式读取文件,返回ArrayList,里面的元素位每个国家的名称 
* @param @param fileName
* @param @return    设定文件 
* @return ArrayList<String>    返回类型 
* @throws
*/

public static List<String> readyFileByLines(String fileName){

File file = new File(fileName);
BufferedReader br = null;
List<String> list = new ArrayList<String>();
try{
String str = null;
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK"));
while((str = br.readLine()) != null){
list.add(str);//把有值的对象添加到集合
}
}catch(Exception e){
e.getMessage();
}finally{
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return list;
}

}

测试类:

说明:世界国家集.txt:是来自与http://country.911cha.com/ 网站的国家名成;

如图:

package com.getcount;

import java.util.List;

/** 
 * @ClassName: WordNationalFlag 
 * @Description:java爬取世界国旗 
 * @author lhz
 * @date 2018年7月9日 下午10:47:23 
 */
public class TestWordNationalFlag {

public static void main(String[] args) {

String fileName = "src/世界国家集.txt";
   List<String> list = WordNationalFlag.readyFileByLines(fileName);
   for(String country : list){
   String page = WordNationalFlag.doPost(country);
   if(page.indexOf("html") >= 0){
   WordNationalFlag.getConnection(page);
   }
   }
   System.out.println("国旗下载完毕");
   }  
 
}

最后得到的图片:

java抓取世界国家国旗相关推荐

  1. java抓取网站数据

    java 抓取网站数据 假设你需要获取51job 人才网上java 人才的需求数量,首先你需要分析51job 网站的搜索这 一块是怎么运作的,通过解析网页的源代码,我们发现了以下一些信息: 1. 搜索 ...

  2. java 抓取网页乱码_java抓取网页乱码问题的处理

    今天同事做了一个我们感觉很牛B的彩票预测程序,采用的是遗传算法实现,于是我"剽"来学习先,但是部署到我电脑上以后,就有问题了: 1.用她的抓取程序得到的网页内容出现乱码,导致数据无 ...

  3. java抓取网页内容

    今天做项目时用到java抓取网页内容,本以为很简单的一件事但是还是让我蛋疼了一会,网上资料一大堆但是都是通过url抓取网页内容,但是我要的是读取本地的html页面内容的方法,网上找不到怎么办我瞬间了! ...

  4. Java抓取起点小说输出到本地文件夹和数据库

    Java抓取起点小说输出到本地文件夹和数据库 目录 项目结构 所需插件 项目代码 输出结果 目录 项目结构 第一次写网络爬虫,参考了别人的,也自己理解了用法 所需插件 因为使用了mevan,直接上po ...

  5. java抓取网页标题内容_[Java教程]java 网页页面抓取标题和正文

    [Java教程]java 网页页面抓取标题和正文 0 2014-07-10 09:01:30 import java.io.BufferedReader;import java.io.IOExcept ...

  6. java抓取网页或者文件的邮箱号码

    抓文件的 package reg;import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io ...

  7. Java抓取网页数据(原网页+Javascript返回数据)

    转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/7909006 有时候因为种种原因,我们须要採集某个站点的数据,但因为不同 ...

  8. java抓取百度搜索结果_java实现抓取百度对某站点搜索结果

    htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容.项目可以模拟浏览器运行,被誉为java浏览器的开源实现.这个没有界面的浏览器,运行速度 ...

  9. java抓取网页数据_实现网络图片爬虫,只需5秒快速把整个网页上的图片全下载打包zip...

    我们经常需要用到互联网上的一些共享资源,图片就是资源的一种,怎么把网页上的图片批量下载下来?有时候我们需要把网页上的图片下载下来,但网页上图片那么多,怎么下载我们想要的东西呢,如果这个网页都是我们想要 ...

最新文章

  1. 高级转录组分析和R语言数据可视化第十三期 (线上线下同时开课)
  2. Altium Designer Exception ESocketError in module X2.EXE at 001B15CF (10107) on API 'Socket'
  3. python format
  4. the little schemer 笔记(7)
  5. 学习响应式BootStrap来写融职教育网站,Bootsrtap第十一天Dplayer播放器
  6. 分布式部署携程Apollo构建配置中心
  7. 3399 mysql_手动安装 mysql
  8. 理解SQL Server中的权限体系(下)----安全对象和权限
  9. 微课|中学生可以这样学Python(5.6.1节):列表推导式2
  10. hadoop 集群间数据迁移
  11. 原生mysql启动_单实例MySQL的启动和关闭的方法
  12. iOS网络请求下来的数据显示时出现的问题
  13. asp.net 配置 X-Frame-Options
  14. PostgreSQL 优化器入门
  15. WPF老矣,尚能饭否——且说说WPF今生未来(下):安心
  16. 2021年茶艺师(初级)考试题库及茶艺师(初级)考试技巧
  17. 漏洞复现:DNS 缓存投毒的经典—— 2008年 kaminsky 漏洞
  18. 为什么我说低代码是“行业毒瘤”?
  19. ireport 5.6.0 添加 Conditional Style 动态加粗字体
  20. 为什么必须了解云原生?!

热门文章

  1. 利用历史数据做商业预测的全过程
  2. C++学习记录 实验1 CMatrix类设计与实现
  3. 嵌入式相关问题记录concerto.mak
  4. 给apk加system权限
  5. JS滚轮事件(mousewheel/DOMMouseScroll)了解 (转载)
  6. 剪切板是计算机系统,剪切板
  7. 信息科学与计算机课件,2015计算机应用基础WIN7+OFFICE2010(南大版)课件:信息科学与计算机.ppt...
  8. Mysql之--------------------多表查询(内连接 左外连接 右外连接)常见的数据库函数
  9. 使用XSHELL连接中标麒麟系统
  10. HTML5七夕情人节表白网页制作【结婚倒计时】HTML+CSS+JavaScript html生日快乐祝福网页制作