zoukankan      html  css  js  c++  java
  • .net HttpCrawler

    using HtmlAgilityPack;
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace HttpCrawler
    {
        class Program
        {
            static void Main(string[] args)
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                var titles = from row in GetHtml("http://bbs.csdn.net/forums/DotNET/").DocumentNode.SelectSingleNode("//table[@class='table_list parent_forum ']").Elements("tr").Skip(1)
                             let td = row.Element("td")
                             where td != null
                             let a = td.Descendants("a").FirstOrDefault()
                             where a != null
                             select new
                             {
                                 href = a.Attributes["href"].Value,
                                 text = a.InnerText
                             };
                var pages = from t in titles
                                .AsParallel().WithDegreeOfParallelism(20)
                            where t.href != null
                            let path = "http://bbs.csdn.net" + t.href
                            let subQuery = from nick in GetHtml(path).DocumentNode.SelectNodes("//span[@class='name2nick']")
                                           where nick.InnerText == "sp1234"
                                           select nick
                            where subQuery.Any()
                            select new
                            {
                                title = t.text,
                                href = path
                            };
                var results = pages.ToList();
                sw.Stop();
                Console.WriteLine("不加并发的时间:"+sw.ElapsedMilliseconds);
                Console.ReadKey();
            }
            static HtmlDocument GetHtml(string url)
            {
                var content = Encoding.UTF8.GetString(new WebClient().DownloadData(url));
                var doc = new HtmlDocument();
                doc.Load(new StringReader(content));
                return doc;
            }
        }
    }
    

      

  • 相关阅读:
    go学习中的零散笔记
    git reset --hard与git reset --soft的区别
    php必学必会
    gdb 解core
    php学习
    高仿京东到家APP引导页炫酷动画效果
    RxHttp
    SVN回滚文件
    遍历枚举
    python3 多线程
  • 原文地址:https://www.cnblogs.com/c-x-a/p/7792750.html
Copyright © 2011-2022 走看看