zoukankan      html  css  js  c++  java
  • 抓取网页扒图片相对路径改绝对路径

    呵呵,抓取网页扒链接和图片的时候,总有些路径是写的相对路径,比如../之类的,我写了一个函数解决点问题,但不能全部解决,哪位大侠有兴趣有指点一下么

    代码
           #region A标签相对路径改绝对路径
            
    private static void AHrefFilter(ref string content, string Url, ref string MatchPattern)
            {
                
    //A标签相对路径改绝对路径
                MatchPattern = @"\bhref=[^:^;^#^+^>]*?>";
                MatchCollection mcAhref 
    = Regex.Matches(content, MatchPattern, RegexOptions.IgnoreCase); 
                
    foreach (Match m in mcAhref)
                {
                    
    string hrefStr = m.Value.Replace("href""").Replace("HREF""").Substring(1);
                    
    string hrefStrTrim = hrefStr;
                    
    if (!hrefStr.Contains("http"&& hrefStr.StartsWith("\"/"))
                    {
                        
    string urlagain = Regex.Match(Url, "http://([^/]*?/)").Value.Trim();
                        hrefStr 
    = "\"" + urlagain.Substring(0, urlagain.Length - 1) + hrefStr.Substring(1);
                    }
                    
    if (!hrefStr.Contains("http"&& hrefStr.Contains("\"../../"))
                    {
                        hrefStr 
    = hrefStr.Replace("http://www.cnblogs.com/""");
                        hrefStr 
    = "\"" + Regex.Match(Url, "http://([^/]*?/){2}").Value.Trim() + hrefStr.Substring(1);
                    }
                    
    if (!hrefStr.Contains("http"&& hrefStr.Contains("\"../"))
                    {
                        hrefStr 
    = hrefStr.Replace("../""");
                        hrefStr 
    = "\"" + Regex.Match(Url, "http://([^/]*?/){3}").Value.Trim() + hrefStr.Substring(1);
                    }
                    
    if (!hrefStr.Contains("http"&& !hrefStr.StartsWith("\"/"))
                    {
                        hrefStr 
    = "\"" + Regex.Match(Url, "http://([^/]*?/){4}").Value.Trim() + hrefStr.Substring(1);
                    }
                    
    string newHrefStr = "href=" + hrefStr + "";
                    content 
    = content.Replace(m.Value, newHrefStr); 
                }
            }
            
    #endregion 
  • 相关阅读:
    几种存储器类型总结
    几种存储器类型总结
    JPEG2000开发SDK及其特点
    JPEG2000开发SDK及其特点
    测试代码的编写
    测试代码的编写
    关于opencv的几个小总结
    关于opencv的几个小总结
    假设检验与判决准则(一)
    Canny算法源码,欢迎交流
  • 原文地址:https://www.cnblogs.com/jacd/p/1810286.html
Copyright © 2011-2022 走看看