- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
滨江学院
《计算机网络》课程设计
题 目 网络爬虫
院 系 计算机系
专 业 网络工程
学生姓名 吴培培
学 号 20112346060
二O年月日.3.1 URL抽取
通过观察研究HTML代码,我们可以知道。HTML代码中,页面之间的跳转,关联是通过href标签来实现的。我们需要获取HTML代码中的URLs,就可以通过寻找href标签来达到目的。
通过观察得知,一般href标签是以href=这样的形式出现的。但是不同的网站href=后面的内容有所不同。比如href=”url”这样情况,我们就可以通过截取双引号之间的内容来获取URL;如果是href=’url’这种情况,我们就需要截取单引号之间的内容来获取URL;或者有些是href=url,我们需要以等号为开始标记,而这种情况通常结尾是空格或者符号。
通过这种方法,我们获取网页中大部分的URLs。但是有些URLs是通过提交表单,或者通过javascript来跳转的。这些情况就需要更细致的考虑,才能获取。
4.3.2 URL解析
截取出来的字符串,可能为相对地址或者绝对地址。所以需要判断URL为绝对地址,还是相对地址。相对地址需要先转化为绝对地址,再进行过滤。因为解析出来的URL地址可能是一些文件的地址,或者为javascript文件或者css文件。这些格式的URL是无法获取HTML代码的,也就不可能进行URL解析。所以我们需要过滤掉这些URLs。然后再进行URL消重处理,最后加入到URL等待队列。
为了把爬行限制在同一站点内需要截断指向站外的链接,保证SPIDER总在站内执行,即准确地根据超链URL判断超链是否指向站外.由RFC对URL的定义可知,URL的格式为[protocol://host:port/path?query],一般情况下,同一网站内所有页面对应URL的host是相同的,所以可以使用host匹配作为判断超链是否指向站外的标准. 进一步研究发现,很多大型网站中一个分类目录对应一个主机, 所以前面的判断标准必须改进.研究host的组成可知, host的格式一般为[站内分类.站点标志串.站点类型各异的串].站点类型串只有[ com |edu|gov|net| 国家域名]几种类型,所以我们取站点类型各异串前面的串,即站点标志串作匹配,超链URL的host中是否包含此串,为超链是否站内的判断标准.
4.3.3 URL保存
因为等待URLs的数目非常多,如果全部采用List来存储非常的占用内存空间。所以将等待URLs存入数据库中,并设计2个缓存区,用于向队列中加入和取得URLs。URL等待队列设计成三段式:第一段为一个List,用来加入新得到的URL。当这个List中的数目过多时,则将List中的内容加入到数据库,并清空该List,以便加入新的URLs;第二段为数据库,当第一段数据过多时,将第一段内的数据存入数据库;第三段也为一个List,从这里面分配任务URL,当该List内URL不足时,将数据库里的数据再转存入。
系统实现
5.1 实现工具
操作系统是winXP;JAVA程序的编写工具是eclipse;数据库是MYSQL。
5.2 爬虫工作
在这个循环里,首先会向URL等待队列里请求一个URL。因为URL队列会出现为空或者被其他线程占用的情况。如果没有得到URL就继续向URL等待队列申请。当得到任务URL以后,会通过这个URL得到对应的HTML代码。具体方法是调用getHtml(String sourse_url)这个方法:
HttpURLConnection connection = null;
InputStreamReader in = null;
BufferedReader br = null;
URL url = null;
url = new URL(sourse_url);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
// 打开的连接读取的输入流。
in = new InputStreamReader(url.openStream());
br = new BufferedReader(in);
String c;
while ((c = br.readLine()) != null) {
html.append(c);
}
return html.toSt
您可能关注的文档
最近下载
- 2024-2025学年初中信息技术(信息科技)七年级全一册义务教育版(2024)教学设计合集.docx
- 《眼耳鼻咽喉口腔科护理学》教案 第13课 耳鼻咽喉科常见疾病患者的护理(三).docx VIP
- 2025年江苏南京中考语文试卷(真题--含答案) .pdf VIP
- 统编版(2024)道德与法治七年级上册期末复习全册知识点提纲.docx VIP
- 建筑工程述标(鲁班奖项目超高层框架结构技术答辩).pptx VIP
- 混凝土结构通用规范GB55008-2021知识培训.pptx VIP
- 《电梯关键部件寿命评估技术规范》.pdf VIP
- 高压氧舱技术的进步与挑战.docx VIP
- 消防考试试题100题及答案.docx VIP
- 2025电力企业数字化转型成熟度评价指南.pdf VIP
文档评论(0)