有朋友需要获取全国2013年统计用区划代码和城乡划分代码,于是写了个爬虫抓数据。
仔细分析页面后,发现其特点是根据最终的区域代码,可以反推上级省、市等代码,故只保存最后一步数据。
第一次接触爬虫,边做边研究。只写了个单线程,下载了41分钟。
后来研究多线程爬虫,又写了个多线程爬知乎话题+回答的程序。由于暂时无法正确保存页面上各种程序语言的代码,半成品的程序就不放出来了。
下面是单线程下载统计局全国区划代码的源码,要改成多线程也不难。不过已经下载到了结果,就懒得再做无用功了。
package king.statitics;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class GetNoAndAddress {
// 由于每个网页层数未知,用List来保存每一层网页。
// Map的第一个String为网址,第二个String为 代码和地址,用SEPARATOR隔开
private static List<Map<String, String>> tempList = new ArrayList<Map<String, String>>();
private static final String SEPERATOR = "|";
private static Map<String, String> result = new TreeMap<String, String>();
public static void main(String[] args) throws Exception {
// 网址: 2013年统计用区划代码和城乡划分代码(截止2