- 46
- 0
我可以用webmagic顺利地抓取网页上的所有链接,并保存在一个集合里面,然而当我运行了一段普通的代码后,这个集合里面的链接数量就变了,好奇怪,谁能解释一下吗?
代码如下:
List<String> homeworkUrlList = page.getHtml().xpath("//tr[@class='altrow']//td[1]").links().all();
if(homeworkUrlList!=null && homeworkUrlList.size()>0){
// JSONArray jsonArray = new JSONArray();
// List<String> homeworkUrlList2 = homeworkUrlList;
// int courseid = Integer.parseInt(pageUrl.substring(pageUrl.indexOf("=")+1));
// for(String homeworkUrl: homeworkUrlList){
// int homeworkId = Integer.parseInt(homeworkUrl.substring(homeworkUrl.lastIndexOf("=")+1));
// tdid2 = tdid+String.valueOf(homeworkId);
// finish = page.getHtml().xpath("//td[@id='"+tdid2+"']/span/text()").toString();
// //System.out.println(finish);
//
// if(finish.equals("未提交")){
// JSONObject jsonobject = new JSONObject();
// jsonobject.put("userid", login.id);
// jsonobject.put("courseid",courseid );
// jsonobject.put("homeworkid", homeworkId);
// jsonArray.add(jsonobject);
// }
// }
//
// if(jsonArray != null && jsonArray.size()>0){
// page.putField("unfinish", jsonArray);
// }
// System.out.println("homework list:"+homeworkUrlList);
System.out.println(homeworkUrlList.size());
page.addTargetRequests(homeworkUrlList);
}
云服务器那里截图不方便,我把结果复制下来。
下面是运行了注释部分的代码前后的结果的一部分:
运行注释部分的代码前:
10
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=559
15
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=568
11
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=282
15
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=708
15
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=201
15
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=132
15
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=164
11
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=444
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=166
1
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=247
15
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=206
7
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=1168
14
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=297
8
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=300
1
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=219
15
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=445
6
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=494
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=166
1
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=247
unfinish: [{"homeworkid":4404,"userid":1,"courseid":247}]
插入未提交作业表
3
get page: http://www.scholat.com/course/S_homeworkList.html?courseId=512
unfinish: [{"homeworkid":9269,"userid":1,"courseid":512},{"homeworkid":8344,"userid":1,"courseid":512},{"homeworkid":8343,"userid":1,"courseid":512}]
插入未提交作业表
get page: http://www.scholat.com/course/S_oneHomework.html?courseId=247&homeworkId=4404
no match!
get page: http://www.scholat.com/course/S_oneHomework.html?courseId=512&homeworkId=9269
no match!
get page: http://www.scholat.com/course/S_oneHomework.html?courseId=512&homeworkId=8344
no match!
get page: http://www.scholat.com/course/S_oneHomework.html?courseId=512&homeworkId=8343
no match!
登陆信息正确!!!
也就是说,本应该homeworkUrlList的数量很多的,运行了只是部分的代码以后却变少了,百思不得解,望有人能指点迷津!!
下面是pipeline的代码:
if(Pattern.matches(pattern3, resultItems.getRequest().getUrl())){
JSONArray jsonArray = resultItems.get("unfinish");
if(jsonArray!=null && jsonArray.size()>0){
for(int i=0;i<jsonArray.size();i++){
Unfinish unfinish = new Unfinish();
unfinish.setUserId(jsonArray.getJSONObject(i).getInt("userid"));
unfinish.setCourseId(jsonArray.getJSONObject(i).getInt("courseid"));
unfinish.setHomeworkId(jsonArray.getJSONObject(i).getInt("homeworkid"));
System.out.println("插入未提交作业表");
unfinishDao.add(unfinish);
}
}
}
难道是pipeline的代码影响了吗?可是表面看上去pipeline的代码只是取数据和存数据而已。
- 共 0 条
- 全部回答
-
◇樱花巷ぴ 普通会员 1楼
WebMagic抓取的链接集合异常通常是由于网络问题、服务器问题或者抓取策略的问题引起的。以下是一些可能的原因和解决方案:
-
网络问题:如果抓取的链接集中在某个地理位置或者服务器的某一特定部分,可能会导致集合异常。解决方案是尝试在其他网络环境中抓取相同的内容,或者调整抓取策略,避免集中在某个特定区域或者服务器。
-
服务器问题:如果服务器的性能下降或者负载过大,也可能导致集合异常。解决方案是检查服务器的负载情况,如果负载过大,可能需要增加服务器的资源或者使用负载均衡。
-
抓取策略问题:如果抓取的链接集合包含恶意或者敏感的内容,可能需要调整抓取策略,避免抓取这些内容。解决方案是使用安全的抓取策略,例如使用代理IP,或者使用爬虫框架。
-
WebMagic本身的问题:如果WebMagic本身的问题导致了集合异常,例如错误的抓取规则或者限制了抓取的链接,那么可能需要修复WebMagic本身的问题。
-
网络防火墙或者安全设置问题:如果抓取的链接集合被网络防火墙或者安全设置阻止,那么可能需要检查网络防火墙或者安全设置,以确保能够抓取这些链接。
总的来说,如果WebMagic抓取的链接集合异常,应该检查网络、服务器、抓取策略、WebMagic本身以及网络防火墙或者安全设置等多个方面,找出问题的原因并采取相应的解决方案。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
