解决方程

时间:2015-04-27 15:34:26

标签: java web-crawler equation

我正在尝试编写一个Web爬虫算法。为此,我使用下面的等式:

enter image description here

我也写了这段代码来解决它:

public class URLWeight {


public static List<LinkNode> weight(LinkNode sourceLink, List<LinkNode> links){

    List<LinkNode> interLinks = new LinkedList<>();
    List<LinkNode> intraLinks = new LinkedList<>();


    for (LinkNode link : links) {
        if(isIntraLink(sourceLink, link)) { 
            intraLinks.add(link);
        } else {
            interLinks.add(link);
        }
    }


    if(interLinks.size()>intraLinks.size()) {
      // finding inter weight
      for (LinkNode link : interLinks) {
          link.setWeight(((interLinks.size() + intraLinks.size())-intraLinks.size())/(interLinks.size() + intraLinks.size())*(2/3f));
      }

      // finding intra weight

      for (LinkNode link : intraLinks) {
              link.setWeight(((interLinks.size() + intraLinks.size())-intraLinks.size())/(interLinks.size() + intraLinks.size())*(1/3f));
        }
    }


    //////*//////


    else
    if(interLinks.size()<intraLinks.size()) {
      //inter puan
      for (LinkNode link : interLinks) {
          link.setWeight(((interLinks.size() + intraLinks.size())-interLinks.size())/(interLinks.size() + intraLinks.size())*(2/3f));
      }

      // intra puan
      for (LinkNode link : intraLinks) {
      link.setWeight(((interLinks.size() + intraLinks.size())-interLinks.size())/(interLinks.size() + intraLinks.size())*(1/3f));
    }

    }

    List<LinkNode> list = new LinkedList<>();
    list.addAll(interLinks);
    list.addAll(intraLinks);

    return list;
}

程序运行没有错误但结果错误,所有结果都让我得到了带有URL结果循环的0.0。程序将开始使用种子URL进行爬网,然后将链接分成两组(内部和内部),然后它将比较(内部和内部)的大小并尝试使用1到4之间的等式来获得每个内部和内部链接结果。然后对边界中每个链接的权重进行排序,然后在下一步中,它将选择最高权重作为下一步的种子URL。但是程序应该在某些地方堆叠,并且让我使用相同的URL不会多次抓取任何链接。以下是我得到的一些结果:

http://www.example.edu ---> 

    http://www.iaeng.org/IMECS2015/ICDMA2015.html 
    http://www.example.edu/contacts.html -- 0.0 
    http://sdiwc.net/conferences/2014/bigdata2014/ -- 0.0 
    http://sdiwc.net/conferences/2014/icctim2014/ -- 0.0 
    http://www2014.wwwconference.org/sub2_1.php -- 0.0 
    http://example.edu/?language=en_US -- 0.0 
    http://www.sanayi.gov.tr/Default.aspx?lng=en -- 0.0    
    http://www.huawei.com/tr/ -- 0.0 
    https://www.tai.com.tr/tr -- 0.0 
    http://www.example.edu/courses.html -- 0.0 
    http://www.example.edu/index.html -- 0.0 
    http://www.example.edu/people.html -- 0.0 
    http://www.example.edu/projects.html -- 0.0 
    http://www.example.edu/publications.html -- 0.0     
    http://www.example.edu/research.html -- 0.0 15 

http://www.iaeng.org/IMECS2015/ICDMA2015.html ---> 

    http://www.example.edu/contacts.html -- 0.0
    http://www.example.edu/research.html -- 0.0 
    http://sdiwc.net/conferences/2014/bigdata2014/ -- 0.0  
    http://sdiwc.net/conferences/2014/icctim2014/ -- 0.0 
    http://www2014.wwwconference.org/sub2_1.php -- 0.0 
    http://example.edu/?language=en_US -- 0.0  
    http://www.sanayi.gov.tr/Default.aspx?lng=en -- 0.0  
    http://www.huawei.com/tr/ -- 0.0 
    https://www.tai.com.tr/tr -- 0.0 
    http://www.example.edu/courses.html -- 0.0 
    http://www.example.edu/index.html -- 0.0 
    http://www.example.edu/people.html -- 0.0 
    http://www.example.edu/projects.html -- 0.0   
    http://www.example.edu/publications.html -- 0.0

你能想到我做错了什么或我该怎么做才能解决这个问题?问题点?

1 个答案:

答案 0 :(得分:3)

我最好的猜测是你使用所有.size()方法中的整数除法,如果答案小于1,将导致0。将.size()的结果转换为float或double