pan_cras 2016-11-07 02:30 采纳率: 100%
浏览 1021
已采纳

网络编程和文件读写的程序

最近在写一个网络爬虫的Java程序,想从多个网页上拿数据,然后写到一个文件里?
因为数据量挺多的,所以想考虑优化的问题。

所以问下常见的优化思路是怎么样的?(应该有多个思路吧,比如说用到线程什么的)

  • 写回答

4条回答 默认 最新

  • huangyue009 2016-11-08 07:58
    关注

    一般爬行可以根据运行的环境是单机或者是分布式设定工作的线程数,同时需要一个爬行过页面的索引,因为是多线程,爬过的就需要跳过。
    还有就是索引可以将爬下来的内容进行多个文件存储,因为单个文件存储不但查询会很慢(多文件可以先遍历文件名再遍历内容,单个文件需要遍历全部内容)。

    优化的方向有几个:
    1、解析的算法,网页爬下来后需要抽出里面的内容,去掉不用的标签
    2、索引和存储的算法,索引考虑用url进行索引,至于多少内容怎么存储可以参考开源
    3、参与计算的设备数量,单机的话建议cpu核数差不多的线程就好了,多的有没太多提高。还可以用Hadoop的集群运行的自己的java程序。就是弄好多计算机联合计算,连线程都不用设置了
    暂时想到这么多
    有成熟的框架,比如nutch这个java的,里面包含了爬行的算法,线程,页面的内容解析存储。可以参考下,比自己闷头写要好。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题