天天看点

我来做百科(第二十天) B

tag系统完成,再修复一些添加词条,修改内容的问题,就可以做数据采集了。

数据采集网上的资料很多,再结合自己的需要,写了一下代码:

我来做百科(第二十天) B

protected void Button1_Click(object sender, EventArgs e)

我来做百科(第二十天) B

    {

我来做百科(第二十天) B

        Lemma lemma = new Lemma();

我来做百科(第二十天) B
我来做百科(第二十天) B

        Response.Write("采集结果:<br/><br/>");

我来做百科(第二十天) B

        Response.Flush();

我来做百科(第二十天) B
我来做百科(第二十天) B

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

我来做百科(第二十天) B

        {

我来做百科(第二十天) B
我来做百科(第二十天) B

            string sUrl = strurl + (i * 10).ToString();

我来做百科(第二十天) B
我来做百科(第二十天) B

            Response.Write("采集url:" + sUrl + "<br/>");

我来做百科(第二十天) B

            Response.Flush();

我来做百科(第二十天) B
我来做百科(第二十天) B

            foreach (string temp in GetHtmls(@"/view/\d+\.htm", GetUrlHtml(sUrl)))

我来做百科(第二十天) B

            {

我来做百科(第二十天) B

                string url = u + temp;

我来做百科(第二十天) B
我来做百科(第二十天) B

                string sHtml = GetUrlHtml(url);

我来做百科(第二十天) B
我来做百科(第二十天) B

                string sLemma = GetLemma(sHtml);

我来做百科(第二十天) B

                string sDetail = GetDetail(sHtml);

我来做百科(第二十天) B

                string sTag = GetTag(sHtml);

我来做百科(第二十天) B
我来做百科(第二十天) B

                int idLemma = lemma.AddLemma(sLemma, sDetail, "cloud", 0, string.Empty, url, sTag);

我来做百科(第二十天) B
我来做百科(第二十天) B

                StringBuilder sb = new StringBuilder();

我来做百科(第二十天) B

                sb.Append("id:").Append(idLemma).Append("<br/> 词条:").Append(sLemma).Append("<br/>");

我来做百科(第二十天) B

                sb.Append("Tag:").Append(sTag).Append("<br/> 连接:<a href='").Append(url).Append("'' target='_blank'>").Append(url).Append("</a><br/>");

我来做百科(第二十天) B
我来做百科(第二十天) B

                if (idLemma > 0)

我来做百科(第二十天) B

                {

我来做百科(第二十天) B

                    sb.Append("成功!").Append(" <a href='../index/show.aspx?id=").Append(idLemma).Append("' target='_blank'>查看</a>"); ;

我来做百科(第二十天) B

                }

我来做百科(第二十天) B

                else

我来做百科(第二十天) B
我来做百科(第二十天) B

                    sb.Append("失败!错误代码:").Append(idLemma);

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

                sb.Append("<br/><br/>");

我来做百科(第二十天) B
我来做百科(第二十天) B

                Response.Write(sb.ToString());

我来做百科(第二十天) B

                Response.Flush();

我来做百科(第二十天) B

            }

我来做百科(第二十天) B

        }

我来做百科(第二十天) B

    }

我来做百科(第二十天) B
我来做百科(第二十天) B

    public static string GetUrlHtml(string url)

我来做百科(第二十天) B
我来做百科(第二十天) B

        string output = "";

我来做百科(第二十天) B

        Encoding encode = Encoding.Default;

我来做百科(第二十天) B

        WebClient webclient = new WebClient();

我来做百科(第二十天) B

        try

我来做百科(第二十天) B
我来做百科(第二十天) B

            webclient.Headers.Add("Referer", url);

我来做百科(第二十天) B

            byte[] buff = webclient.DownloadData(url);

我来做百科(第二十天) B

            output = encode.GetString(buff);

我来做百科(第二十天) B
我来做百科(第二十天) B

        catch

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

        return output;

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

    public static string GetHtml(string begin, string end, string content)

我来做百科(第二十天) B
我来做百科(第二十天) B

        return GetHtml(begin + "((.*?\\n?)*?)" + end, content);

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

    public static string GetHtml(string pattern, string content)

我来做百科(第二十天) B
我来做百科(第二十天) B

        Regex reg = new Regex(pattern);

我来做百科(第二十天) B

        Match match = reg.Match(content);

我来做百科(第二十天) B
我来做百科(第二十天) B

        if (match != Match.Empty)

我来做百科(第二十天) B
我来做百科(第二十天) B

            //content = content.Replace(match.Groups[1].ToString(), string.Empty);

我来做百科(第二十天) B

            return match.Groups[1].ToString();

我来做百科(第二十天) B
我来做百科(第二十天) B

        else

我来做百科(第二十天) B
我来做百科(第二十天) B

            return string.Empty;

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

    public static StringCollection GetHtmls(string begin, string end, string content)

我来做百科(第二十天) B
我来做百科(第二十天) B

        return GetHtmls(begin + "((.*?\\n?)*?)" + end, content);

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

    public static StringCollection GetHtmls(string pattern, string content)

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

        MatchCollection matches = reg.Matches(content);

我来做百科(第二十天) B

        StringCollection list = new StringCollection();

我来做百科(第二十天) B

        foreach (Match match in matches)

我来做百科(第二十天) B
我来做百科(第二十天) B

            if (match != Match.Empty)

我来做百科(第二十天) B
我来做百科(第二十天) B

                list.Add(match.Value);

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

        return list;

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

    /// <summary>

我来做百科(第二十天) B

    /// 正则替换

我来做百科(第二十天) B

    /// </summary>

我来做百科(第二十天) B

    public static string ReplaceText(string input, string pattern, string replacement)

我来做百科(第二十天) B
我来做百科(第二十天) B

        if (string.IsNullOrEmpty(input)) return string.Empty;

我来做百科(第二十天) B

        Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);

我来做百科(第二十天) B

        return rgx.Replace(input, replacement);

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

    /// 去标签 包括内容

我来做百科(第二十天) B
我来做百科(第二十天) B

    public static string ClearWholeTag(string input, string tag)

我来做百科(第二十天) B
我来做百科(第二十天) B

        return ReplaceText(input, @"<" + tag + "[^>]*?>.*?</" + tag + ">", "");

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

    /// 去标签 不包括内容

我来做百科(第二十天) B
我来做百科(第二十天) B

    public static string ClearTag(string input, string tag)

我来做百科(第二十天) B
我来做百科(第二十天) B

        return ReplaceText(input, @"<\/?" + tag + "[^>]*>", "");

我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B
我来做百科(第二十天) B

    /// 去全部标签

我来做百科(第二十天) B
我来做百科(第二十天) B

    public static string ClearAllTag(string input)

我来做百科(第二十天) B
我来做百科(第二十天) B

        return ReplaceText(input, @"<\/?[a-zA-Z]+[^>]*>", "");

我来做百科(第二十天) B

数据采集就是爽,先来三百多条吧,哈哈。

继续阅读