asp.net采集网页数据需要多线程吗

[复制链接]
查看11 | 回复9 | 2021-1-27 07:20:01 | 显示全部楼层 |阅读模式
我这样写的代码
protectedvoidPage_Load(objectsender,EventArgse)
{
GC.Collect();
GC.WaitForPendingFinalizers();
if(!Page.IsPostBack)
{
Threadcjsjxc=newThread(newThreadStart(cjsj));
cjsjxc.Start();
cjsjxc.Join();
}
}

#region采集
stringyuanma;
protectedvoidcjsj()
{
yuanma=GetHTML("http://m.news.baidu.com/ssid=0/from=0/bd_page_type=1/uid=957D745A22BF680C00446EF1B18B0A24/news?tn=bdwcnc&word=topnews&datano=10086&pfr=3-11-bdindex-top-7-top-","utf-8");
if(yuanma!=null)
{
TextBox1.Text=yuanma;
}
}
#endregion


///获取网页源代码
///
///URL路径
///编码方式
publicstringGetHTML(stringurl,stringencoding)
{
WebClientweb=newWebClient();
byte[]buffer=web.DownloadData(url);
returnEncoding.GetEncoding(encoding).GetString(buffer);
}

如果采集地址是别的网址,或者访问错误的话服务器cpu就会增高。如何获取网页源码更有效而且不消耗太多cpu内存呢?

分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
没什么用..
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
不需要!~!!!!!!!
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
你代码本身就一个单线程。
这个本身只是一个采集程序,又没啥计算的,CPU怎么会高?除非程序异常会
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
不需要。我采集新闻列表都是用的ajax提交上去,返回这个新闻列表,然后再每条连接采集的
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
看不出什么原因会导致CPU增高啊?
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
GC的操作一般不应该手动调用的。
它本身就是耗资源操作。
况且出现在Page_Load这个高效率触发的方法里。
Page对象本身就是IDisposable的。

回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
没有必要是用什么线程啊?!!你既然join,白白启动一个子线程,然后阻塞当前线程,何必呢?!
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
你还不理解B/S的特性。
这么写是没什么价值的。
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
如果一个线程就占用了很高的CPU,那么多线程还是没有必要的,多线程从某种方面是想充分利用起CPU吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行