我正在尝试编写一个Web爬虫算法。为此,我使用下面的等式:
我也写了这段代码来解决它:
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
你能想到我做错了什么或我该怎么做才能解决这个问题?问题点?
答案 0 :(得分:3)
我最好的猜测是你使用所有.size()方法中的整数除法,如果答案小于1,将导致0。将.size()的结果转换为float或double