starfd进来

zhanglong_longlong 2015-07-03 02:50:31
就是前面贴的那个,运行死机
...全文
290 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
public class Reptile
    {
        Uri uri;
        public Reptile(string url)
        {
            this.uri = new Uri(url);
        }

        public void GetLinks()
        {
            var list = this.GetLinks(this.GetHtml(uri));
            list.ForEach(x =>
            {
                Console.WriteLine(x);
            });

            Console.WriteLine(list.Count);
        }

        private List<string> GetLinks(string html)
        {
            string patten = @"<a[\s\S]*?href=(?<k1>[""'])(?<k2>[\s\S]*?)\k<k1>";
            List<string> urls = new List<string>();
            Regex.Matches(html, patten).Cast<Match>().ToList().ForEach(x =>
            {
                urls.Add(x.Groups["k2"].Value);
            });
            return urls;
        }

        private string GetHtml(Uri uri)
        {
            WebClient webClient = new WebClient();
            webClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
            Byte[] byteArr = webClient.DownloadData(uri); //从指定网站下载数据
            return Encoding.UTF8.GetString(byteArr); //如果获取网站页面采用的是UTF-8,则使用这句
        }
    }
我用这个代码做了下测试
  • 打赏
  • 举报
回复
你确认你这样抓没问题?第一个页面打开就702个链接,然后还有论坛……,还有Html……
程序员鼓励师 2015-07-04
  • 打赏
  • 举报
回复
咦 好历害的
本拉灯 2015-07-04
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
问题就在于不知道你为啥内存飙涨啊,你把你访问的起始url贴出来,这样我们好本地测试
zhanglong_longlong 2015-07-03
  • 打赏
  • 举报
回复
引用 6 楼 starfd 的回复:
问题就在于不知道你为啥内存飙涨啊,你把你访问的起始url贴出来,这样我们好本地测试
大哥不是涨,是慢
  • 打赏
  • 举报
回复
最简单就是你开始就用Task.Run来执行,就是说整个都放在异步里面,然后 直接注册一句Control.CheckForIllegalCrossThreadCalls = false;,这样就可以了,但你也说了你内存飙涨……
zhanglong_longlong 2015-07-03
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
最简单就是你开始就用Task.Run来执行,就是说整个都放在异步里面,然后 直接注册一句Control.CheckForIllegalCrossThreadCalls = false;,这样就可以了,但你也说了你内存飙涨……
是的大哥,求好的解决方案
zhanglong_longlong 2015-07-03
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
http://www.cnblogs.com/adforce/archive/2011/12/16/2290157.html线程访问控件 其实你这样开贴没多大意义,你应该把那边的问题贴过来,让更多的人一起帮你解决问题
大哥就是那个里面怎么做多线程,我那样会一时间没响应
  • 打赏
  • 举报
回复
http://www.cnblogs.com/adforce/archive/2011/12/16/2290157.html线程访问控件 其实你这样开贴没多大意义,你应该把那边的问题贴过来,让更多的人一起帮你解决问题
  • 打赏
  • 举报
回复
刚开会,看到你消息了,你这个是不是在主线程里更新的? 还是在异步里更新的?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧