【web service调用】 抓取资源

来源:互联网 发布:淘宝2017今日成交量 编辑:程序博客网 时间:2024/06/03 05:13
<span style="font-size:14px;background-color: rgb(255, 255, 255);">web service调用步骤</span>
<span style="font-size:14px;background-color: rgb(255, 255, 255);">1、右键   项目-->引用-->添加服务引用</span>
<span style="font-size:14px;background-color: rgb(255, 255, 255);">2、在命名空间写入一个名称,然后  --> 高级</span>
<span style="font-size:14px;background-color: rgb(255, 255, 255);">3、-->添加web引用</span>
<span style="font-size:14px;background-color: rgb(255, 255, 255);">4、输入asmx地址,然后转到,然后点击   -->添加引用,结束</span>
using System.IO;using System.Net;using System.Text;using System.Xml;using System;using Newtonsoft.Json;using System.Drawing;using System.Drawing.Imaging;using Newtonsoft.Json.Linq;using ConsoleApplication2.com.fengjing.travel;using System.Collections.Generic;using System.Threading;using System.Linq;/* http://travel.fengjing.com/HolidaySvc.asmx{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"GetScenicPicList","Data":"11749"}   图片     {"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"GetScenicLBS","Data":{"scenicId":"11749"}}   坐标{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"getscenicofvoice","Data":{"scenicId":"11749","userId":""}}  景区+所有子景点列表{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"getsceniclistofcity","Data":{"PageIndex":3,"PageSize":20,"QueryDict":{"cityname":"无锡","voice":"1"}}} 所有景区第3页{"RCode":"fengjing@#*!2014","ClientType":"1","Module":"scenic","Method":"getsceniclistofcity","Data":{"PageIndex":1,"PageSize":20,"QueryDict":{"cityname":"无锡","voice":"1"}}} 所有景区第1页{"RCode":"fengjing@#*!2014","ClientType":0,"Module":"SmartTour","Method":"GetRegionList","Data":{"RegionKey":""}}  所有城市*/class City{    public string Initial { get; set; }    public string Code { get; set; }    public string Parent { get; set; }    public string Name { get; set; }    public string IsSmartTourCity { get; set; }}class Scenic{    public string ScenicId { get; set; }    public string SName { get; set; }    public string PriceNotes { get; set; }    public string City { get; set; }    public string County { get; set; }    public string Level { get; set; }    public string ScenicMes { get; set; }    public string ScenicPic { get; set; }    public string ListionVoiceCount { get; set; }    public string TicketCounT { get; set; }    public string SalePrice { get; set; }    public string voice_Picture { get; set; }    public string isVoice { get; set; }    public string isPiao { get; set; }    public string lon { get; set; }    public string lat { get; set; }    public string Address { get; set; }    public string Score { get; set; }    public string CommentCount { get; set; }    public string CommentList { get; set; }    public string FavoriteCountOfPiao { get; set; }    public string IsFavoriteOfPiao { get; set; }    public string FavoriteCountOfVoice { get; set; }    public string IsFavoriteOfVoice { get; set; }    public string VoiceFile { get; set; }    public string scenicDistance { get; set; }    public string PicCount { get; set; }    public string LocalVoiceCount { get; set; }    public string LocalVoiceTypeCount { get; set; }}class Scenic1{    public string ScenicId { get; set; }    public string SName { get; set; }    public string PriceNotes { get; set; }    public string City { get; set; }    public string County { get; set; }    public string Level { get; set; }    public string ScenicMes { get; set; }    public string ScenicPic { get; set; }    public string ListionVoiceCount { get; set; }    public string TicketCounT { get; set; }    public string SalePrice { get; set; }    public string voice_Picture { get; set; }    public string isVoice { get; set; }    public string isPiao { get; set; }    public string lon { get; set; }    public string lat { get; set; }    public string mapPath { get; set; }    public string Address { get; set; }    public string Score { get; set; }    public string FavoriteCountOfVoice { get; set; }    public string IsFavoriteOfVoice { get; set; }    public string IsScenicTrfface { get; set; }    public string IsScenicNews { get; set; }    public string IsScenicCustom { get; set; }    public string IsScenicFood { get; set; }    public string scType { get; set; }    public string Traffic { get; set; }    public string PicCount { get; set; }}class ScenicChild{    public string ScenicId { get; set; }    public string SpotId { get; set; }    public string FileName { get; set; }    public string FileSize { get; set; }    public string InertTimeStr { get; set; }    public string SummaryTxt { get; set; }    public string ImgPath { get; set; }    public string SpotName { get; set; }    public string FileExt { get; set; }    public string FileNameShort { get; set; }    public string localvoicelist { get; set; }}class Spot{    public string Title { get; set; }    public string XCoord { get; set; }    public string YCoord { get; set; }    public string ScenicId { get; set; }    public string SpotId { get; set; }    public string SpotName { get; set; }}namespace ConsoleApplication2{    class Program    {        public static HolidaySvc svc = new HolidaySvc();        public static int CityCount;  //城市个数        public static int ScenicCount;  //每个城市景点个数        public static int ScenicChildCount;  //每个景点语音个数        public static int ImgUrlCount;  //图片个数        public static int SpotCount;   //现场个数        public static City[] city = new City[500];        public static Scenic1 scenic1 = new Scenic1();        public static ScenicChild[] scenicchild = new ScenicChild[100];        public static string[] url = new string[50];        public static Spot[] spot = new Spot[100];        public static void getCityArray()        {            string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":0,\"Module\":\"SmartTour\",\"Method\":\"GetRegionList\",\"Data\":{\"RegionKey\":\"\"}}";            string ss = svc.RequestServiceData(senddata);            ss = "[" + ss + "]";            using (StreamWriter sw = new StreamWriter(@"D: \ALL\CityJson.txt"))            {                sw.WriteLine(ss);            }            JArray jsonObj = JArray.Parse(ss);            JObject j = (JObject)jsonObj.First;            j = (JObject)j["Data"];            jsonObj = (JArray)j["Citys"];            foreach (JObject jObject in jsonObj)            {                city[CityCount] = new City();                city[CityCount].Initial = jObject["Initial"].ToString();                city[CityCount].Code = jObject["Code"].ToString();                city[CityCount].Parent = jObject["Parent"].ToString();                city[CityCount].Name = jObject["Name"].ToString();                city[CityCount].IsSmartTourCity = jObject["IsSmartTourCity"].ToString();                CityCount++;            }        }        public static void CreateScenicArray(string city, string path)        {            List<Scenic> scenic = new List<Scenic>();            ScenicCount = 0;            for (int i = 1; i < 50; i++)            {                string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"getsceniclistofcity\",\"Data\":{\"PageIndex\":" + i.ToString() + ",\"PageSize\":20,\"QueryDict\":{\"cityname\":\"" + city + "\",\"voice\":\"1\"}}}";                string s = svc.RequestServiceData(senddata);                s = "[" + s + "]";                JArray jsonObj = JArray.Parse(s);                JObject j = (JObject)jsonObj.First;                string f = j["Data"].ToString();                if (f == "")                {                    break;                }                using (StreamWriter sw = new StreamWriter(path + @"\景点列表JSON.txt"))                {                    sw.WriteLine(f);                }                jsonObj = (JArray)j["Data"];                foreach (JObject jObject in jsonObj)                {                    var sc = new Scenic();                    sc.ScenicId = jObject["ScenicId"].ToString();                    sc.SName = jObject["SName"].ToString();                    sc.PriceNotes = jObject["PriceNotes"].ToString();                    sc.City = jObject["City"].ToString();                    sc.County = jObject["County"].ToString();                    sc.Level = jObject["Level"].ToString();                    sc.ScenicMes = jObject["ScenicMes"].ToString();                    sc.ScenicPic = jObject["ScenicPic"].ToString();                    sc.ListionVoiceCount = jObject["ListionVoiceCount"].ToString();                    sc.TicketCounT = jObject["TicketCounT"].ToString();                    sc.SalePrice = jObject["SalePrice"].ToString();                    sc.voice_Picture = jObject["voice_Picture"].ToString();                    sc.isVoice = jObject["isVoice"].ToString();                    sc.isPiao = jObject["isPiao"].ToString();                    sc.lon = jObject["lon"].ToString();                    sc.lat = jObject["lat"].ToString();                    sc.Address = jObject["Address"].ToString();                    sc.Score = jObject["Score"].ToString();                    sc.CommentCount = jObject["CommentCount"].ToString();                    sc.CommentList = jObject["CommentList"].ToString();                    sc.FavoriteCountOfPiao = jObject["FavoriteCountOfPiao"].ToString();                    sc.IsFavoriteOfPiao = jObject["IsFavoriteOfPiao"].ToString();                    sc.FavoriteCountOfVoice = jObject["FavoriteCountOfVoice"].ToString();                    sc.IsFavoriteOfVoice = jObject["IsFavoriteOfVoice"].ToString();                    sc.VoiceFile = jObject["VoiceFile"].ToString();                    sc.scenicDistance = jObject["scenicDistance"].ToString();                    sc.PicCount = jObject["PicCount"].ToString();                    sc.LocalVoiceCount = jObject["LocalVoiceCount"].ToString();                    sc.LocalVoiceTypeCount = jObject["LocalVoiceTypeCount"].ToString();                    scenic.Add(sc);                    ScenicCount++;                }            }            //for (int i = 2; i < ScenicCount; i++)  //从2开始忽略广州塔和罗浮宫==============================================================            try            {                scenic.Skip(2).ToList().AsParallel().ForAll(sc =>                {                    // var sc = scenic[i];                    DirectoryInfo dir = new DirectoryInfo(path);                    dir.CreateSubdirectory(sc.SName);//创建景点目录                    Console.WriteLine(sc.SName + "目录创建完毕");//打印查看                    string path1 = path + @"\" + sc.SName;                    dir = new DirectoryInfo(path1);                    dir.CreateSubdirectory("Scenic");//创建景点目录下的景点资源目录                    using (StreamWriter sw = new StreamWriter(path1 + @"\Scenic\Scenic.txt"))//创建简介文本文件并写入                    {                        sw.WriteLine(sc.ScenicId);                        sw.WriteLine(sc.SName);                        sw.WriteLine(sc.PriceNotes);                        sw.WriteLine(sc.City);                        sw.WriteLine(sc.County);                        sw.WriteLine(sc.Level);                        sw.WriteLine(sc.ScenicMes);                        sw.WriteLine(sc.ScenicPic);                        sw.WriteLine(sc.ListionVoiceCount);                        sw.WriteLine(sc.TicketCounT);                        sw.WriteLine(sc.SalePrice);                        sw.WriteLine(sc.voice_Picture);                        sw.WriteLine(sc.isVoice);                        sw.WriteLine(sc.isPiao);                        sw.WriteLine(sc.lon);                        sw.WriteLine(sc.lat);                        sw.WriteLine(sc.Address);                        sw.WriteLine(sc.Score);                        sw.WriteLine(sc.CommentCount);                        sw.WriteLine(sc.CommentList);                        sw.WriteLine(sc.FavoriteCountOfPiao);                        sw.WriteLine(sc.IsFavoriteOfPiao);                        sw.WriteLine(sc.FavoriteCountOfVoice);                        sw.WriteLine(sc.IsFavoriteOfVoice);                        sw.WriteLine(sc.VoiceFile);                        sw.WriteLine(sc.scenicDistance);                        sw.WriteLine(sc.PicCount);                        sw.WriteLine(sc.LocalVoiceCount);                        sw.WriteLine(sc.LocalVoiceTypeCount);                        sw.WriteLine("==================================================");                    }                    downloadPicture(sc.ScenicPic, path1 + @"\Scenic\ScenicPic.jpg");                    downloadPicture(sc.voice_Picture, path1 + @"\Scenic\voice_Picture.jpg");                    downloadSound(sc.VoiceFile, path1 + @"\Scenic\VoiceFile.mp3");                    try                    {                        dir.CreateSubdirectory("Scenic1");//创建景点目录下的Scenic1目录                        CreateScenic1(sc.ScenicId, path1 + @"\Scenic1");                        CreateScenic1Child(sc.ScenicId, path1 + @"\Scenic1"); //下载spot声音                    }                    catch (Exception e)                    {                        Console.WriteLine(e.Message + "CreateScenic1错误");                    }                    try                    {                        dir.CreateSubdirectory("Images");//创建景点目录下的Images目录                        CreateImg(sc.ScenicId, path1 + @"\Images");                    }                    catch (Exception e)                    {                        Console.WriteLine(e.Message + "CreateImg错误");                    }                    try                    {                        CreateSpot(sc.ScenicId, path1); //创建现场所有坐标点txt                    }                    catch (Exception e)                    {                        Console.WriteLine(e.Message + "CreateSpot错误");                    }                });            }            catch(Exception e)            {                Console.WriteLine(e.Message+"sc错误");            }        }        public static void CreateScenic1(string id, string path)        {            string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"getscenicofvoice\",\"Data\":{\"scenicId\":\"" + id + "\",\"userId\":\"\"}}";            string s = svc.RequestServiceData(senddata);            s = "[" + s + "]";            using (StreamWriter sw = new StreamWriter(path + @"\声音文件Json.txt"))            {                sw.WriteLine(s);            }            JArray jsonObj = JArray.Parse(s);            JObject j = (JObject)jsonObj.First;            j = (JObject)j["Data"];            scenic1.ScenicId = j["ScenicId"].ToString();            scenic1.SName = j["SName"].ToString();            scenic1.PriceNotes = j["PriceNotes"].ToString();            scenic1.City = j["City"].ToString();            scenic1.County = j["County"].ToString();            scenic1.Level = j["Level"].ToString();            scenic1.ScenicMes = j["ScenicMes"].ToString();            scenic1.ScenicPic = j["ScenicPic"].ToString();            scenic1.ListionVoiceCount = j["ListionVoiceCount"].ToString();            scenic1.TicketCounT = j["TicketCounT"].ToString();            scenic1.SalePrice = j["SalePrice"].ToString();            scenic1.voice_Picture = j["voice_Picture"].ToString();            scenic1.isVoice = j["isVoice"].ToString();            scenic1.isPiao = j["isPiao"].ToString();            scenic1.lon = j["lon"].ToString();            scenic1.lat = j["lat"].ToString();            scenic1.mapPath = j["mapPath"].ToString();            scenic1.Address = j["Address"].ToString();            scenic1.Score = j["Score"].ToString();            scenic1.FavoriteCountOfVoice = j["FavoriteCountOfVoice"].ToString();            scenic1.IsFavoriteOfVoice = j["IsFavoriteOfVoice"].ToString();            scenic1.IsScenicTrfface = j["IsScenicTrfface"].ToString();            scenic1.IsScenicNews = j["IsScenicNews"].ToString();            scenic1.IsScenicCustom = j["IsScenicCustom"].ToString();            scenic1.IsScenicFood = j["IsScenicFood"].ToString();            scenic1.scType = j["scType"].ToString();            scenic1.Traffic = j["Traffic"].ToString();            scenic1.PicCount = j["PicCount"].ToString();            downloadPicture(scenic1.mapPath, path + @"\导游图.jpg");            using (StreamWriter sw = new StreamWriter(path + @"\简介1.txt"))            {                sw.WriteLine(scenic1.ScenicId);                sw.WriteLine(scenic1.SName);                sw.WriteLine(scenic1.PriceNotes);                sw.WriteLine(scenic1.City);                sw.WriteLine(scenic1.County);                sw.WriteLine(scenic1.Level);                sw.WriteLine(scenic1.ScenicMes);                sw.WriteLine(scenic1.ScenicPic);                sw.WriteLine(scenic1.ListionVoiceCount);                sw.WriteLine(scenic1.TicketCounT);                sw.WriteLine(scenic1.SalePrice);                sw.WriteLine(scenic1.voice_Picture);                sw.WriteLine(scenic1.isVoice);                sw.WriteLine(scenic1.isPiao);                sw.WriteLine(scenic1.lon);                sw.WriteLine(scenic1.lat);                sw.WriteLine(scenic1.mapPath);                sw.WriteLine(scenic1.Address);                sw.WriteLine(scenic1.Score);                sw.WriteLine(scenic1.FavoriteCountOfVoice);                sw.WriteLine(scenic1.IsFavoriteOfVoice);                sw.WriteLine(scenic1.IsScenicTrfface);                sw.WriteLine(scenic1.IsScenicNews);                sw.WriteLine(scenic1.IsScenicCustom);                sw.WriteLine(scenic1.IsScenicFood);                sw.WriteLine(scenic1.scType);                sw.WriteLine(scenic1.Traffic);                sw.WriteLine(scenic1.PicCount);                sw.WriteLine("==================================================");            }            Console.WriteLine(scenic1.SName + "简介创建完毕");        }        public static void CreateScenic1Child(string id, string path)        {            List<ScenicChild> lsc = new List<ScenicChild>();            string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"getscenicofvoice\",\"Data\":{\"scenicId\":\"" + id + "\",\"userId\":\"\"}}";            string s = svc.RequestServiceData(senddata);            s = "[" + s + "]";            JArray jsonObj = JArray.Parse(s);            JObject j = (JObject)jsonObj.First;            j = (JObject)j["Data"];            jsonObj = (JArray)j["spotlist"];            foreach (JObject jObject in jsonObj)            {                var sc = new ScenicChild();                sc.ScenicId = jObject["ScenicId"].ToString();                sc.SpotId = jObject["SpotId"].ToString();                sc.FileName = jObject["FileName"].ToString();                sc.FileSize = jObject["FileSize"].ToString();                sc.InertTimeStr = jObject["InertTimeStr"].ToString();                sc.SummaryTxt = jObject["SummaryTxt"].ToString();                sc.ImgPath = jObject["ImgPath"].ToString();                sc.SpotName = jObject["SpotName"].ToString();                sc.FileExt = jObject["FileExt"].ToString();                sc.FileNameShort = jObject["FileNameShort"].ToString();                sc.localvoicelist = jObject["localvoicelist"].ToString();                lsc.Add(sc);                ScenicChildCount++;            }            try            {                lsc.ToList().AsParallel().ForAll(sc => {                    DirectoryInfo dir = new DirectoryInfo(path);                    dir.CreateSubdirectory(sc.SpotName);                    using (StreamWriter sw = new StreamWriter(path + @"\" + sc.SpotName + @"\简介.txt"))                    {                        sw.WriteLine(sc.ScenicId);                        sw.WriteLine(sc.SpotId);                        sw.WriteLine(sc.FileName);                        sw.WriteLine(sc.FileSize);                        sw.WriteLine(sc.InertTimeStr);                        sw.WriteLine(sc.SummaryTxt);                        sw.WriteLine(sc.ImgPath);                        sw.WriteLine(sc.SpotName);                        sw.WriteLine(sc.FileExt);                        sw.WriteLine(sc.FileNameShort);                        sw.WriteLine(sc.localvoicelist);                        sw.WriteLine("==================================================");                    }                    downloadPicture(sc.ImgPath, path + @"\" + sc.SpotName + @"\1.jpg");                    downloadSound(sc.FileName, path + @"\" + sc.SpotName + @"\1.mp3");                    Console.WriteLine(sc.SpotName + "文件下载完毕");                });            }            catch            {                Console.WriteLine("sc1错误");            }        }        public static void CreateImg(string id, string path)        {            ImgUrlCount = 0;            string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"GetScenicPicList\",\"Data\":\"" + id + "\"}";            string s = svc.RequestServiceData(senddata);            s = "[" + s + "]";            using (StreamWriter sw = new StreamWriter(path + @"\Json3.txt"))            {                sw.WriteLine(s);            }            JArray jsonObj = JArray.Parse(s);            JObject j = (JObject)jsonObj.First;            jsonObj = (JArray)j["Data"];            foreach (JObject jObject in jsonObj)            {                url[ImgUrlCount] = jObject["url"].ToString();                ImgUrlCount++;            }            for (int i = 0; i < ImgUrlCount; i++)            {                downloadPicture(url[i], path + @"\" + i.ToString() + ".jpg");            }            Console.WriteLine("此景区所有图片下载完毕");        }        public static void CreateSpot(string id, string path)        {            SpotCount = 0;            string senddata = "{\"RCode\":\"fengjing@#*!2014\",\"ClientType\":\"1\",\"Module\":\"scenic\",\"Method\":\"GetScenicLBS\",\"Data\":{\"scenicId\":\"" + id + "\"}}";            string s = svc.RequestServiceData(senddata);            s = "[" + s + "]";            using (StreamWriter sw = new StreamWriter(path + @"\坐标Json.txt"))            {                sw.WriteLine(s);            }            JArray jsonObj = JArray.Parse(s);            JObject j = (JObject)jsonObj.First;            jsonObj = (JArray)j["Data"];            foreach (JObject jObject in jsonObj)            {                spot[SpotCount] = new Spot();                spot[SpotCount].Title = jObject["Title"].ToString();                spot[SpotCount].XCoord = jObject["XCoord"].ToString();                spot[SpotCount].YCoord = jObject["YCoord"].ToString();                spot[SpotCount].ScenicId = jObject["ScenicId"].ToString();                spot[SpotCount].SpotId = jObject["SpotId"].ToString();                spot[SpotCount].SpotName = jObject["SpotName"].ToString();                SpotCount++;            }            using (StreamWriter sw = new StreamWriter(path + @"\Spot.txt"))            {                for (int i = 0; i < SpotCount; i++)                {                    sw.WriteLine(spot[i].Title + ":" + spot[i].XCoord + ":" + spot[i].YCoord + ":" + spot[i].ScenicId + ":" + spot[i].SpotId + ":" + spot[i].SpotName);                }            }            Console.WriteLine("坐标下载完毕");        }        public static void downloadPicture(string url, string path)        {            try            {                Uri uri = new Uri(url);                WebRequest request = WebRequest.Create(uri);                WebResponse response = request.GetResponse();                Stream s = response.GetResponseStream();                Image image = Image.FromStream(s);                image.Save(path, ImageFormat.Jpeg);//绝对路径            }            catch (Exception e)            {                Console.WriteLine(e.Message + "图片不存在");            }        }        public static void downloadSound(string url, string path)        {            try            {                //创建请求                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);                //接收响应                HttpWebResponse response = (HttpWebResponse)request.GetResponse();                //输出流                Stream responseStream = response.GetResponseStream();                using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))                {                    byte[] bufferBytes = new byte[10000];//缓冲字节数组                    int bytesRead = -1;                    while ((bytesRead = responseStream.Read(bufferBytes, 0, bufferBytes.Length)) > 0)                    {                        fs.Write(bufferBytes, 0, bytesRead);                    }                    //关闭写入                    fs.Flush();                    fs.Close();                }            }            catch (Exception e)            {                Console.WriteLine(e.Message + ",文件不存在");            }        }        public static void CreateALL()        {            List<string> ll = new List<string>();            getCityArray();            string path = @"";            for (int i = 0; i < CityCount; i++)            {                try                {                    if (!ll.Contains(city[i].Initial))                    {                        ll.Add(city[i].Initial);                        path = @"D:\ALL";                        DirectoryInfo _dir = new DirectoryInfo(path);                        _dir.CreateSubdirectory(city[i].Initial);                    }                    path = @"D:\ALL\" + city[i].Initial;                    DirectoryInfo dir = new DirectoryInfo(path);                    dir.CreateSubdirectory(city[i].Name);//创建城市目录                    Console.WriteLine(city[i].Name + "目录创建完毕");//打印查看                }                catch (Exception e)                {                    Console.WriteLine(e.Message + "T错误");                }                try                {                    CreateScenicArray(city[i].Name.Replace("市", ""), path + @"\" + city[i].Name);                }                catch (Exception e)                {                    Console.WriteLine(e.Message + "CreateALL错误");                }            }        }        static void Main(string[] args)        {            CreateALL();        }    }}

0 0
原创粉丝点击