简单抓取小程序大全,并展示。

发布时间:2017-7-1 11:37:48编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"简单抓取小程序大全,并展示。 ",主要涉及到简单抓取小程序大全,并展示。 方面的内容,对于简单抓取小程序大全,并展示。 感兴趣的同学可以参考一下。

          前言 ,想利用小程序导航页面来提升网站的流量,找到  www.xcxdh666.com  该小程序导航网站。

 分析网页

        1 发现网站其实也是用异步分页请求加载数据的  ,所以根本用不着xpath  解析html,直接分析其请求url

        2点击加载更多找到请求,发现其实就 pageNum ,cagegory 两个参数

       3所以直接请求url    带入参数,分析起返回json结果

  编写代码

         1 首先建立接收类型       

 public class XcxApplet    {        public int id { get; set; }        public string categoryName { get; set; }        public string name { get; set; }        public string saomaUrl { get; set; }        public string sum { get; set; }        public string logoUrl { get; set; }    }    public class Result    {        public List<XcxApplet> dataList { get; set; }        public string category { get; set; }        public int  status { get; set; }        public int pageNum { get; set; }    }

  

     2  封装请求页面方法

  

   public static string GetPostPage(this string posturl, string postData)            {                Encoding encoding = Encoding.UTF8;                byte[] data = null;                if (!string.IsNullOrEmpty(postData)) data = encoding.GetBytes(postData);                try                {                    // 设置参数                    var request = WebRequest.Create(posturl) as HttpWebRequest;                    if (request == null) return string.Empty;                    var cookieContainer = new CookieContainer();                    request.CookieContainer = cookieContainer;                    request.AllowAutoRedirect = true;                    request.Method = "POST";                    request.ContentType = "application/x-www-form-urlencoded";                    if (data != null)                    {                        request.ContentLength = data.Length;                        Stream outstream = request.GetRequestStream();                        outstream.Write(data, 0, data.Length);                        outstream.Close();                    }                    //发送请求并获取相应回应数据                    var response = request.GetResponse() as HttpWebResponse;                    if (response == null) return string.Empty;                    //直到request.GetResponse()程序才开始向目标网页发送Post请求                    Stream instream = response.GetResponseStream();                    if (instream == null) return string.Empty;                    var sr = new StreamReader(instream, encoding);                    //返回结果网页(html)代码                    string content = sr.ReadToEnd();                    string err = string.Empty;                    //Response.Write(content);                    return content;                }                catch (Exception ex)                {                    string err = ex.Message;                    return string.Empty;                }            }

  3  图片url处理   思路就是要将其返回的url 请求下载到本地或者上传到自己对应的图片服务器,

           我这里是用七牛云存储img的 ,这里你可以改成下载到本地 返回本地的url就好。

  

public string  QiniuUplod(string imgurl)        {                          var accessKey = "你的accesskey";            var secretKey = "你的secretkey";            // 生成(上传)凭证时需要使用此Mac            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey            // 实际应用中,请自行设置您的AccessKey和SecretKey            Mac mac = new Mac(accessKey, secretKey);            string bucket = "siyouku";            string saveKey = imgurl.Substring(imgurl.LastIndexOf('/')+1,imgurl.Length- imgurl.LastIndexOf('/')-1);            // 使用前请确保AK和BUCKET正确,否则此函数会抛出异常(比如code612/631等错误)            Qiniu.Common.Config.AutoZone(accessKey, bucket, false);            // 上传策略,参见             // https://developer.qiniu.com/kodo/manual/put-policy            PutPolicy putPolicy = new PutPolicy();            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"             putPolicy.Scope = bucket + ":" + saveKey;            putPolicy.Scope = bucket;            // 上传策略有效期(对应于生成的凭证的有效期)                      putPolicy.SetExpires(3600);            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除            //putPolicy.DeleteAfterDays = 1;            // 生成上传凭证,参见            // https://developer.qiniu.com/kodo/manual/upload-token                        string jstr = putPolicy.ToJsonString();            string token = Auth.CreateUploadToken(mac, jstr);            try            {                                var wReq = System.Net.WebRequest.Create(imgurl) as System.Net.HttpWebRequest;                var resp = wReq.GetResponse() as System.Net.HttpWebResponse;                using (var stream = resp.GetResponseStream())                {                    // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length)                    // 请使用FormUploader或者ResumableUploader的UploadStream方法                    FormUploader fu = new FormUploader();                    var result = fu.UploadStream(stream, saveKey, token);                    var x = Newtonsoft.Json.JsonConvert.DeserializeObject<QiniuResult>(result.Text);                    return $"http://img.siyouku.cn/{x.key}";                }            }            catch (Exception ex)            {


上一篇:【mysql】编码问题
下一篇:linux 命令shuf

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款