搜索引擎和信息检索实践_课后习题_第三章

本文详细解答了关于搜索引擎和信息采集的课后习题,涉及选择较小文档集合的原因、网络爬虫的线程需求、HEAD与GET请求的优缺点、POST请求在爬虫中的应用、深层网络的站点类型、表单填充策略、网站地图生成、分布式爬虫策略、单线程网络爬虫编写、字符编码比较(UTF-8与UTF-16)以及HTML标签压缩算法等知识点。
摘要由CSDN通过智能技术生成

3.1   假设有两个文档集合,较小的集合中全部都是有用的、正确的、高质量的信息。较大的集合中含有一些高质量的文档,但还有一些低质量的、过时的、书写较差的文本。只对较小的集合建立搜索引擎的原因是什么?对两个集合都建立搜索引擎的原因是什么?


3.2   假设有一个网络连接,每秒可以传输10MB的数据。如果每个网页大小为10K,需要500毫秒进行传输,网络爬虫需要多少个线程才能完全利用网络连接?如果爬虫在对同一网络服务器发出的不同请求之间需要等待10秒钟,系统每秒钟最少需要连接多少台网络服务器,才能充分地利用网络连接?
答:传输速率10MB/s,网页平均大小为10K,那么爬虫程序每秒可以备份1K个页面。又每个页面需要500ms进行传输,用1K*500ms=500s,这意味着一秒内传输1K个页面需要使用500个连接,在礼貌策略下等待10s,因此系统每秒钟最少需要连接5000台网络服务器才能有效地利用网络连接。

3.3   在信息采集过程中,使用HEAD请求而不是GET请求的优点是什么?什么时候爬虫需要使用GET请求而不是HEAD请求?
答:1.HTTP协议有一个称为HEAD的特殊请求,使得检查页面是否发生变化更加容易了。HEAD请求只返回页面的头部信息,而不是页面的内容。2.在爬虫发现请求页面的内容发生变化的时候,需要通过GET请求获取目标页面的内容,此时使用GET请求,而不是HEAD请求。

注:HEAD请求中Last-Modified的值指出了页面内容最后一次发生变化的时间。可以看到,在对GET请求进行响应时,这个日期信息也随着响应一起发送。这就允许网络爬虫对上一次从GET请求接收的日期与HEAD请求中得到的Last-Modified的值进行比较。

3.4   爬虫为什么不使用POST请求?
答:虽然爬虫也可以通过使用POST请求获取网页。除了POST请求可以向服务器发送额外的请求信息之外,它和GET请求类似,习惯上,GET请求用于抓取已经在服务器上存在的数据,而POST请求用于告诉服务器一些事情。当你点击一个按钮购买商品或者对网页进行编辑时,就可以使用POST请求。如果运行一个爬虫程序,这个惯例是很有用的。由于只是发送了一个GET请求,就有助于确保网络爬虫不会再无意间去购买一件商品。

3.5   给出本章中提到的组成深层网络的三种站点类型的名字。
答:私人站点(private site)、表单结果(form result)、脚本页面(scripted page)。

3.6   为了实现对深层网络网页的信息采集,如何设计一个系统,能够自动地将数据填写到网页表单中?使用什么样的方法能保证爬虫的行为没有破坏性(例如,不会随机地增加博客评论)?
答:两种方法:1、分析网页中的form标签,其中action属性是提交请求的url,f

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值