首页新闻找找看学习计划

请问怎么高效的爬数据?

0
悬赏园豆:20 [待解决问题]

最近在学习数据库方面的知识,本来想模拟一些数据练习的,后来想了想还是想弄些真实数据来练习,于是就用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方面的知识解答,多谢啦

空城灬无旧人的主页 空城灬无旧人 | 初学一级 | 园豆:153
提问于:2019-07-20 02:03
< >
分享
所有回答(2)
0

一个问题一个问题解决.
会断开就加重试机制.单线程慢就多线程.
本地带宽不够就放服务器.

吴瑞祥 | 园豆:28675 (高人七级) | 2019-07-20 15:51
0

我之前也是初学用python爬取知乎内容你可以看下(https://github.com/prophetss/zhihu-crawler) 你遇到的问题也都有遇到过,对你说的这几点:数据量大最好数据库管理,知乎话题也是一个有向无环图我当时使用的redis存储按其结构存储。一条连接抓取过快肯定会被拒绝,所以多线/进程肯定是必须的,还有代理ip质量必须要高,最好是匿名的。最后你说的编码问题确实比较麻烦,但是研究研究肯定都能解决。

水墨的心 | 园豆:361 (菜鸟二级) | 2019-07-22 12:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册