• ADURL简化程序


    using System;
    using System.Diagnostics;
    using System.Net;
    using System.Text;
    using System.Web;
    using System.Linq;
    using System.IO;
    using System.Collections.Generic;
    namespace AdUrlConvert
    {
    class Program
    {
    public static string Finalurl;
    public static string getProxyIP = System.Configuration.ConfigurationManager.AppSettings["proxyIP"];
    public static int getproxyPORT = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["proxyPORT"]);
    public static string getinputCsvPath = System.Configuration.ConfigurationManager.AppSettings["inputCsvPath"];
    public static string getoutputCsvPath = System.Configuration.ConfigurationManager.AppSettings["outputCsvPath"];
    static void Main(string[] args)
    {
    readUrlCsv();
    }
    public static string GetFinalAdUrl(string finlurl, string url)
    {
    try
    {
    
    
    Finalurl = finlurl;
    string result = string.Empty;
    HttpWebRequest request = WebRequest.Create(finlurl) as HttpWebRequest; //第一步:用工厂机制(factory mechanism)通过Create()方法来创建一个HttpWebRequest对象。
    request.AllowAutoRedirect = false; // 获取或设置一个值,该值指示请求是否应跟随重定向响应。
    WebProxy proxy = new WebProxy(getProxyIP, getproxyPORT);
    request.Proxy = proxy;
    HttpWebResponse response = request.GetResponse() as HttpWebResponse; //第二步:调用 HttpWebRequest.GetResponse()方法返回的是一个HttpWebResponse对象
    
    while (response.Headers["Location"] != null)
    {
    try
    {
    Finalurl = response.Headers["Location"];
    response.Close();
    request = WebRequest.Create(Finalurl) as HttpWebRequest;
    request.AllowAutoRedirect = false;
    request.Referer = Finalurl;
    response = request.GetResponse() as HttpWebResponse;
    }
    catch (Exception x)
    {
    Finalurl = "null";
    LogHelper.WriteLog(typeof(Program), string.Format("今行ってURL:{0} 詳しい内容は {1}", url, x.Message));
    break;
    }
    
    
    }
    LogHelper.WriteLog(typeof(Program), string.Format("今行ってURL:{0} 詳しい内容は {1}", url, "Finalurl:" + Finalurl));
    
    response.Close();
    }
    catch (Exception ex)
    {
    
    LogHelper.WriteLog(typeof(Program), string.Format("今行ってURL:{0} 詳しい内容は {1}", url, ex.Message));
    }
    return Finalurl;
    
    
    #region 源码的获取
    //Stream sr = response.GetResponseStream(); //从Internet资源返回数据流
    //if (sr != null) 
    //{
    // StreamReader reader = new StreamReader(sr, Encoding.UTF8); //读取数据流
    // result = reader.ReadToEnd();
    // reader.Close();
    // sr.Close();
    // request.Abort();
    // response.Close();
    //} 
    //url = response.Headers["Location"];
    //response.Close();
    
    //request = WebRequest.Create(url) as HttpWebRequest;
    //request.AllowAutoRedirect = false;
    //request.Referer = url;
    //response = request.GetResponse() as HttpWebResponse;
    //url = response.Headers["Location"];
    //response.Close();
    
    //request = WebRequest.Create(url) as HttpWebRequest;
    //request.AllowAutoRedirect = false;
    //request.Referer = url;
    //response = request.GetResponse() as HttpWebResponse;
    //url = response.Headers["Location"];
    //response.Close();
    //Console.WriteLine(url);
    #endregion 源码的获取
    
    }
    
    public static void readUrlCsv()
    {
    string path = getinputCsvPath;
    UrlList ul = new UrlList();
    ul.Finalurl = new List<string>();
    ul.Finalurl.Add("最終URL");
    ul.ADurlList = File.ReadAllLines(path, Encoding.UTF8).ToList();
    int index = 1;
    // 循环访问一遍
    
    ul.ADurlList.Skip(1).ToList().ForEach(x =>
    {
    ul.Finalurl.Add(GetFinalAdUrl(ul.ADurlList[index],ul.ADurlList[index]));
    index++;
    });
    // 对出错的重新访问
    index = 1;
    
    
    ul.ADurlList.ForEach(x =>
    {
    if (ul.Finalurl[index] == null)
    {
    ul.Finalurl[index] = GetFinalAdUrl(ul.ADurlList[index], ul.ADurlList[index]);
    index++;
    }
    });
    index = 0;
    // 生成最终的csv
    
    for (int i = 0; i < ul.ADurlList.Count; i++)
    {
    ul.ADurlList[i] += "," + ul.Finalurl[i];
    }
    File.WriteAllLines(getoutputCsvPath, ul.ADurlList);
    }
    }
    }
    

      

  • 相关阅读:
    SpringBoot分布式篇Ⅷ --- 整合SpringCloud
    SpringBoot分布式篇Ⅶ --- 整合Dubbo
    java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
    小学数学题
    GoLang GRPC使用
    GoLang Socket 聊天实例
    golang Redis运用
    go mod 运用
    Golang Socket编程小实例
    GoLang协程和管道
  • 原文地址:https://www.cnblogs.com/c-x-a/p/6182663.html
Copyright © 2020-2023  润新知