asp.net c# 调用百度pai 实现在线翻译,英文转中文

本文介绍如何使用百度翻译API进行文本翻译,并通过C#实现网页内容抓取及翻译,包括处理网页HTML标签、调用API进行翻译等关键技术。

首先去百度:注册个apikey

http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91API

然后代码如下只看红色部分就可以了:

using System;

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;
using System.Text.RegularExpressions;


namespace Fangyi
{
    public partial class _Default : System.Web.UI.Page
    {
   
        protected void Page_Load(object sender, EventArgs e)
        {
            GSEntities db = new GSEntities();
            for (int i = 740; i < 900000; i++)
            {


                try
                {
                    System.Threading.Thread.Sleep(100);
                    GetUrl("http://www.52mvc.com/story/love/" + i + ".html",db); //采集
                }
                catch (Exception ex)
                {
                    System.Threading.Thread.Sleep(1500);
                }
            }
            db.Dispose();
        }


        private void GetUrl(string url, GSEntities db)
        {
            content cc = new content(); 
            string apikey = "WqLOfG9o2VS1lriX4mz3mDj8";
            var enstr = GetHtml.getHtml(url, null);
            var title = Regex.Match(enstr.Replace("\n",""), @"<font style\=""font\-size\: 18px\; font\-weight\: bold\;""\>(.+?)\<\/font\>").Groups[1].Value;
            enstr = Regex.Replace(enstr, @"\r|\n", "");
            enstr = ReHtml(enstr);
            enstr = Regex.Match(enstr, @"双击或拖选\)(.+?)                                       ").Groups[1].Value;
            var atitle = GetHtml.getHtml("http://openapi.baidu.com/public/2.0/bmt/translate?client_id="
                 + apikey + "&q=" + title + "&from=auto&to=auto", null);

            JavaScriptSerializer jss2 = new JavaScriptSerializer();
            var aa2 = jss2.Deserialize<jsonss>(atitle);
            title = aa2.trans_result.First().dst;
            enstr = enstr.Trim();
            string val = "\t\t";
            if (enstr.Length < 2000)
            {
              
                int i = 0;
                var list = enstr.Replace("&nbsp;", "").Replace("&quot;", "“").Split('.').ToList();
                list.ForEach(c =>
                {
                    var a = GetHtml.getHtml("http://openapi.baidu.com/public/2.0/bmt/translate?client_id="
                  + apikey + "&q=" + c + "&from=auto&to=auto", null);

                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    var aa = jss.Deserialize<jsonss>(a);
                    val += aa.trans_result.First().dst + "。";
                    ++i;
                    if (i % 5 == 0)
                    {
                        System.Threading.Thread.Sleep(15000);
                        val += "\n\t\t";
                    }


                    System.Threading.Thread.Sleep(1000);
                });
                cc.title = title;
                cc.val = val;
                db.content.AddObject(cc);
                db.SaveChanges();
            }
        }
        public string ReHtml(string HTML)
        {
            string pattern = @"<[\s\S]*?>";
            Regex regex = new Regex(pattern);
            HTML = regex.Replace(HTML, "");
            return HTML;
        }


        //中文转为UNICODE字符 forget never


        public string ctu(string str)
        {
            string outStr = "";
            if (!string.IsNullOrEmpty(str))
            {
                for (int i = 0; i < str.Length; i++)
                {
                    //将中文字符转为10进制整数,然后转为16进制unicode字符
                    outStr += "\\u" + ((int)str[i]).ToString("x");
                }
            }
            return outStr;
        }


        //UNICODE字符转为中文


        public string utc(string str)
        {
            string outStr = "";
            if (!string.IsNullOrEmpty(str))
            {
                string[] strlist = str.Replace("\\", "").Split('u');
                try
                {
                    for (int i = 1; i < strlist.Length; i++)
                    {
                        //将unicode字符转为10进制整数,然后转为char中文字符 asp.net
                        outStr += (char)int.Parse(strlist[i], System.Globalization.NumberStyles.HexNumber);
                    }
                }
                catch (FormatException ex)
                {
                    outStr = ex.Message;
                }
            }
            return outStr;
        }
    }














}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值