最近在学习数据库方面的知识,本来想模拟一些数据练习的,后来想了想还是想弄些真实数据来练习,于是就用jsoup到国家统计局官网上爬全国的省市区镇乡的信息,粗略估计了下大概有八九十万的数据,但是它的网页是树状图类型,节点特别多,我只会一点简单的jsoup爬,就下面这样:
String url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/index.html";
Document doc = Jsoup.connect(url).timeout(500000).maxBodySize(0).get();
Elements provinces = doc.select("........");
然后foreach,类似递归那样一层一层获取数据存到excel,不敢一次性爬,用代理IP开多线程一般就一两条线程能爬完,有时候经常爬了几千条就断开连接了,而且很容易被拒绝访问,请问路过的大神我该怎么爬?
另外这个网站的编码都是gb2312的,爬下来好多生僻字乱码,试过用:
Document document = Jsoup.parse(new URL(url).openStream(),"gbk","url");解决大部分生僻字乱码,但还是有少数乱码解决不了
以上问题找过很多方法都没完全解决,所以请各位大神帮帮忙,我是学Java的,希望回答的大神能用Java方面的知识解答,多谢啦
一个问题一个问题解决.
会断开就加重试机制.单线程慢就多线程.
本地带宽不够就放服务器.