• 采集系统的实现


    1、读取招聘单位列表信息
        打开web_url指定的网站页面,并通过StreamReader对象读取网页源代码存入字符串all_code中,便于正则表达式提取。
        HttpWebRequest all_codeRequest = (HttpWebRequest)WebRequest.Create(web_url);
        WebResponse all_codeResponse = all_codeRequest.GetResponse();
        StreamReader the_Reader = new StreamReader(all_codeResponse.GetResponseStream(), System.Text.Encoding.Default);
        string all_code = the_Reader.ReadToEnd();
        the_Reader.Close();


    2、提取招聘单位的超链列表
        创建表达式字符串p,用它创建正则表达式对象re,并使用re.Matches方法返回all_code字符串所有匹配的超链集合hy。
        string p = @".+";
        Regex re = new Regex(p, RegexOptions.IgnoreCase);
        MatchCollection hy = re.Matches(all_code);
        for (int i = 0; i < hy.Count; i++)
        {
        ….//读取单位信息
        …//获得每个招聘单位发布的岗位链接集合gw
        for(int j=0;j  { …//使用正则表达式过滤,读取岗位招聘人数、有效时间、学历要求等
        …//信息存入本地数据库相关表中}
        }


    3、信息存入本地数据库
        为将信息存入本地数据库对应的表,在SQL Server中设计了一个存储过程InsertJobs,用来解决相应的数据插入问题。其中webid中存放ID是目标网站用于区分岗位的标识,InsertJobs根据其检查该岗位是否需要插入数据库,保证数据不重复。
        SqlCommand cmd = new SqlCommand("InsertJobs", con);
        cmd.CommandType = CommandType.StoredProcedure;
        try {
        cmd.Parameters.AddWithValue("@companyname", companyname);
        ……//招聘岗位信息
        cmd.Parameters.Add("@webid", SqlDbType.BigInt, 8); //记录岗位ID
        cmd.Parameters["@webid"].Value = Convert.ToInt64(jid);
        cmd.ExecuteNonQuery();
        }
        catch (Exception){continue;}
        
    4、结束语

        利用该设计方案,我们成功地对某人才网的信息进行了采集;其实,只需适当修改,就可用于采集其他特定网站的信息。由于针对特定的网站进行信息采集,并不需要像搜索爬虫一样对整个网站进行扫描,所以采集的速度比较快。要避免再次采集时对已采集信息的重复提取,可以在数据库中存放已扫描的链接,在2.3算法第4步读取超链内容前进行判断,则可以提高再次采集时的工作效率。

  • 相关阅读:
    vim命令总结
    SQL语句中----删除表数据drop、truncate和delete的用法
    备份数据工具类
    JavaWeb之 JSP:自定义标签
    Android studio安装与配置
    Redis 从入门到放弃
    java相关网址汇总2
    java相关网址汇总1
    校验字符串编码工具类
    java相关网址汇总(myself)
  • 原文地址:https://www.cnblogs.com/sky-net/p/4359108.html
Copyright © 2020-2023  润新知