小编Mon*_*RPG的帖子

HtmlAgilityPack - 如何在加载页面时设置自定义编码

使用以下方法加载页面时是否可以设置自定义编码?

HtmlWeb hwWeb = new HtmlWeb();
HtmlDocument hd = hwWeb.load("myurl");
Run Code Online (Sandbox Code Playgroud)

我想将编码设置为“iso-8859-9”。

我使用 C# 4.0 和 WPF。

编辑:该问题已在 MSDN 上得到解答。

c# wpf encoding load html-agility-pack

0
推荐指数
1
解决办法
1万
查看次数

检查url是text/html还是其他文件类型,如图像

我正在编写自己的C#4.0 WPF特定网络爬虫.目前我正在使用htmlagilitypack来处理html文档.

现在下面的方式我正在下载页面

HtmlWeb hwWeb = new HtmlWeb();
hwWeb.UserAgent = lstAgents[GenerateRandomValue.GenerateRandomValueMin(irAgentsCount, 0)];
hwWeb.PreRequest = OnPreRequest;
HtmlDocument hdMyDoc;

hwWeb = new HtmlWeb
                {
                    AutoDetectEncoding = false,
                    OverrideEncoding = Encoding.GetEncoding("iso-8859-9"),
                };
hdMyDoc = hwWeb.Load(srPageUrl);


        private static bool OnPreRequest(HttpWebRequest request)
    {
        request.AllowAutoRedirect = true;
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我希望能够确定给定的URL是text/html(可爬行内容)还是image/pdf简单的其他类型.我怎样才能做到这一点 ?

非常感谢您的回答.

C#4.0,WPF应用程序

c# url header

0
推荐指数
1
解决办法
647
查看次数

将C#键值对列表排序到另一个键值对列表中

这是我的清单

List<KeyValuePair<string, int>> lstRodsMonsterPool = new List<KeyValuePair<string, int>>();
Run Code Online (Sandbox Code Playgroud)

现在我想尝试这样排序,但它给出了错误

lstRodsMonsterPool = (from entry in lstRodsMonsterPool 
                      orderby entry.Value ascending 
                      select entry)
          .ToList<new KeyValuePair<string,int>(pair => pair.Key, pair => pair.Value)>;
Run Code Online (Sandbox Code Playgroud)

C#4.0

谢谢

c# sorting list c#-4.0

0
推荐指数
1
解决办法
736
查看次数

无法将类型为'System.Int16'的对象强制转换为'System.String' - AsEnumerable().ToDictionary

Dictionary<string, DataRow> dtUsers;
using (DataSet dsmyTable = DbConnection.db_Select_Query
                     ("use myDb select * from myTable"))
{
    dtUsers= dsmyTable .Tables[0].AsEnumerable().
         ToDictionary(row => row.Field<string>("UserId"));
}
Run Code Online (Sandbox Code Playgroud)

好的UserId是一个smallint列但我想把它作为字符串.

我该如何修改上面的linq?

c# linq casting

0
推荐指数
1
解决办法
3100
查看次数

c#上的字符串方法是否有空处理程序

我能够分配如下变量:

if (Session["myVariable"] != null)
{
    string variAble = Session["myVariable"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

是否有方法检查对象是否为null,然后分配是否为空?

c# string null isnull c#-4.0

0
推荐指数
1
解决办法
291
查看次数

如何做foreach查询同时检查null case?

好的,这就是我现在所做的,但我想知道有没有更好的方法呢?

            if (vrChildNode.SelectNodes("//href") != null)
                foreach (var vrNodes in vrChildNode.SelectNodes("//href"))
                {

                }
Run Code Online (Sandbox Code Playgroud)

如你所见,我实际上是在查询2次.首先是空检查,第二个是foreach.

如果我按照下面的方式执行,如果没有节点则会抛出错误

                foreach (var vrNodes in vrChildNode.SelectNodes("//href"))
                {

                }
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答

c#.net 4.5

c# foreach

0
推荐指数
1
解决办法
78
查看次数

如何使用语句System.Text.Encoding防止代码重复

好的,我如何在这种特殊情况下防止代码重复

由于流读取器字符编码而发生重复.

在某些情况下,我想使用默认值,在某些情况下,我想定义自己.

irCustomEncoding 是一个整数

当我不提供编码默认情况下应用程序做什么?

    using (Stream strumien = response.GetResponseStream())
    {
        if (irCustomEncoding == 0)
        {
            using (StreamReader sr = new StreamReader(strumien))
            {
                srBody = sr.ReadToEnd();
            }
        }
        else
        {
            using (StreamReader sr = new StreamReader(
strumien, System.Text.Encoding.GetEncoding(irCustomEncoding)))
            {
                srBody = sr.ReadToEnd();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以我要问的是我如何编写单个 using (StreamReader...代码而不是复制代码

很多

c#wpf .net 4.5

c# wpf

0
推荐指数
1
解决办法
73
查看次数

如果情况如何编写多个然后情况作为单个案例

好的标题很难让我表达,所以可以编辑

我的问题是我可以用更短的方式写下面的查询

在所有情况下,何时相同

SQL server 2014

这里是查询

    update
   tblCrawlUrls 
set
   cl_LastCrawlDate = case 
      when Len(@cl_CrawlSource) > 2 then SYSUTCDATETIME() 
      else cl_LastCrawlDate  
   end ,
   cl_TotalCrawlTimes = case 
      when Len(@cl_CrawlSource) > 2 then @cl_TotalCrawlTimes 
      else cl_TotalCrawlTimes  
   end ,
   cl_Ignored_By_Containing_Word = case 
      when Len(@cl_CrawlSource) > 2 then @cl_Ignored_By_Containing_Word 
      else cl_Ignored_By_Containing_Word  
   end ,
   cl_PageProcessed = case 
      when Len(@cl_CrawlSource) > 2 then 0 
      else cl_PageProcessed 
   end ,
   cl_CertainlyNotProductPage = case 
      when Len(@cl_CrawlSource) > 2 then @cl_CertainlyNotProductPage 
      else cl_CertainlyNotProductPage 
   end ,
   cl_CrawlSource = case 
      when Len(@cl_CrawlSource) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server case sql-server-2014

0
推荐指数
1
解决办法
67
查看次数

非ui线程可以阻止ui线程吗?导致它冻结并变得反应迟钝?

好吧,就我从线程中读到的而言,这是不可能的,但在我的情况下肯定会发生.

取决于我开始执行多少后台任务,即使它们与ui线程有0关系,也肯定会影响我的gui响应

所以我的问题是,是否有人知道其他线程如何使ui变得反应迟钝?

我100%确定这些非ui线程导致其缓慢,因为它发生,即使我禁用所有gui更新事件.它肯定受我的案例中有多少个线程(抓取网址任务和处理这些抓取的页面任务)的影响

这是我的ui线程以及我如何开始后台任务:

InitializeComponent();

this.DataContext = this;

ThreadPool.SetMaxThreads(10000, 10000);
ThreadPool.SetMinThreads(10000, 10000);

PublicVariables.initPublicVariables();

PublicStaticFunctions.func_initLists();
PublicSettings.func_init_Settings_Messages();

Task.Factory.StartNew(() =>
{
    CheckCrawlURLs.func_StartCrawlingWaitingUrls();
    AddUrlsToDB.func_StartUrlAddProcess();
    LoadCrawlingUrlsFromDatabase.func_StartLoadingUrlsFromDB();
    GlobalStats.startUpdatingGlobalStatValues();
    PagesProcessor.func_StartProcessingWaitingPages();                    
}, CancellationToken.None, 
   TaskCreationOptions.LongRunning, 
   TaskScheduler.Default);

AppDomain currentDomain = AppDomain.CurrentDomain;
Application.Current.DispatcherUnhandledException += 
     new DispatcherUnhandledExceptionEventHandler(CloseCrashHandlers.AppDispatcherUnhandledException);

currentDomain.UnhandledException += 
     new UnhandledExceptionEventHandler(CloseCrashHandlers.CrashCloseHandler);

Closing += new CancelEventHandler(CloseCrashHandlers.CloseHander);

set_Buttons_Status();

_timer = new Timer(updateGlobalStatistics, 
                    null, 
                    PublicSettings.irTimers_Delayed_Start_MiliSeconds, 
                    PublicSettings.ir_RefreshUI_MS);

WebConnectionStats.Init();
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading task-parallel-library windows-8.1

0
推荐指数
1
解决办法
445
查看次数

如何使用LinQ按值分组获取字典中的键列表

好的,这是一本简单的字典

Dictionary<string,int> dicClusters=new Dictionary<string,int>();

dicClusters.Add("A",1);
dicClusters.Add("B",1);
dicClusters.Add("C",2);
dicClusters.Add("D",3);
Run Code Online (Sandbox Code Playgroud)

所以我想从下面编写如下列表

  List<List<string>> lstGroupedByKeys=dicClusters.GroupBy(pr => pr.Value)...
Run Code Online (Sandbox Code Playgroud)

结果将是

first list {"A","B"}
second list {"C"}
third list {"D"}
Run Code Online (Sandbox Code Playgroud)

我可以用多个foreach或使用for循环来编码它,但我相信它可以用linQ完成,我想学习ty

c#.NET 4.5.2

c# linq dictionary group-by

0
推荐指数
1
解决办法
2818
查看次数