• 抓取网页扒图片相对路径改绝对路径


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

    代码
           #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 
  • 相关阅读:
    在centos7下 布隆过滤器2种安装方式
    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
    redis lua --eval报错1: Lua redis() command arguments must be strings or integers
    redis+lua脚本 分布式锁初步学习
    redis中通用命令(key)和补充
    redis基本数据类型有序集合(zset)学习笔记
    redis基本数据结构集合(set)学习笔记
    大道至简读后感
    第一周
    《大道至简》读后感
  • 原文地址:https://www.cnblogs.com/jacd/p/1810286.html
Copyright © 2020-2023  润新知