基于网络蜘蛛的ACM自动刷题系统设计与实现

2026/1/27 16:33:20

的。比如:查找杭电ACM系统中题号为1000的答案文本所在网址链接,则百度搜索引擎需要输入关键字“hdu 1000”,键入回车,此时URL为“http://www.http://china-audit.com//s?wd=hdu+1000&tn=92068069_pg&rsv_enter=1&rsv_sug3=8&rsv_sug=0&rsv_sug1=6&rsv_sug4=412&inputT=3610”。对于这样的URL显然是不利于程序实现搜索的,我们只需要明白其中的几个关键参数即可,这样也能够有效的缩短URL的长度,更好的分析URL与关键字的关系。上述的URL中,wd参数表示查询的关键词,若关键词为简体中文,后续参数中也会有一个ie参数,表示关键词的编码,即ie=gb2312。此外,还有两个URL参数需要注意,pn参数和cl,pn表示显示结果的页数,cl参数=3为网页搜索。其余参数均为可选参数,并不是很必要存在URL当中。因此,在分析了百度搜索参数之后,百度

关键词

,此时

URL

“http://www.http://china-audit.com//s?word=hdu 1000”,由此可见,在没有其他参数的情况下,依然能够搜索出答案文本链接所在网页,表明百度搜索的URL缩短是有效的。此时的URL结构可以解析为:“http://www.http://china-audit.com//s?word=hdu ”+“题号”。在此基础上,利用网络蜘蛛技术,答案文本所在链接的自动搜索的实现也是确实可行的。本系统实现的具体代码如下:

private static void operator0(object obj)

{

try {

show += \

System.Net.WebClient client = new WebClient();

Streamstrm=client.OpenRead(\

word=hdu \

StreamReader sr = new StreamReader(strm); string line; int num = 1; int find1 = -1;

while ((line = sr.ReadLine()) != null) {

find1 = line.IndexOf(\ if (find1 != -1) break; }

if (find1 != -1) {

for (int i = 0; i < 10; i++)

17

{

int find2 = -1; do {

find2 = line.Substring(find1).IndexOf(\

result c-container \

if (find2 != -1) break; find1 = 0;

} while ((line = sr.ReadLine()) != null); if (find2 == -1) break; int find3 = -1; do {

find3 = line.Substring(find1 + find2).IndexOf(\ if (find3 != -1) break; find1 = find2 = 0;

} while ((line = sr.ReadLine()) != null); if (find3 == -1) break; int find4 = -1; string temp = \ do {

find4 = line.Substring(find1 + find2 + find3

+ 8).IndexOf(\

if (find4 != -1) break;

temp += line.Substring(find1 + find2 + find3 + 8);

find1 = find2 = find3 = 0;

} while ((line = sr.ReadLine()) != null); if (find4 == -1) break;

temp += line.Substring(find1 + find2 + find3

+ 8, find4);

link[i] = temp; num++; } }

strm.Close(); OK = true; }

catch (Exception e) {

input_state = 3; search_state = 2;

18

AC_state = 2; } }

实现的百度搜索效果图如下:

图3-3百度搜索效果图

19

4答案文本的预处理

4.1网页文本过滤器

网页文本的内容主要由网页文件、文档文件、图片文件、多媒体文件等组成。当网络蜘蛛被构建时,网页当中的图像和多媒体信息就已经被过滤掉了,此时的网页文本内容主要由HTML标记、文档文件和脚本组成。还是以杭电ACM题号为1000的题目为例,经百度搜索以后,会出图3-1的界面。通过网络蜘蛛技术,获取到图3-1界面的第一个URL链接,即题号为1000的答案文本所在的网页的链接。分析答案文本所在网页的源代码是提取答案文本的前提。下面是该网页的源代码截图:

图4-1网页源代码

显然文本信息中的脚本标记

...
...
等HTML标记对于答案文本的提取来讲并无价值。有价值的信息仅限于
...
标记里面的部分信息。但是这里面的信息预处理并不包括特殊符号,因此需要在网络蜘蛛获取网页文本的时候将这部分信息提取出来,实现其转换成可编译代码的功能交由下一个模块完成即可。系统实现的具体代码如下:

private static void op_getCode1(object obj) {

20


基于网络蜘蛛的ACM自动刷题系统设计与实现.doc 将本文的Word文档下载到电脑
搜索更多关于: 基于网络蜘蛛的ACM自动刷题系统设计与实现 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219