我正在尝试使用HttpWebResponse.GetResponse()和Streamreader.ReadToEnd()在C#中实现有限的Web爬虫(仅限几百个站点),也尝试使用StreamReader.Read()和循环来构建我的HTML字符串.
我只下载大约5-10K的页面.
这一切都很慢!例如,平均GetResponse()时间约为半秒,而平均StreamREader.ReadToEnd()时间约为5秒!
所有站点都应该非常快,因为它们非常靠近我的位置,并且具有快速的服务器.(在资源管理器中几乎没有任何东西到D/L)并且我没有使用任何代理.
我的Crawler有大约20个线程同时从同一个站点读取.这会导致问题吗?
如何减少StreamReader.ReadToEnd DRASTICALLY?
什么是最推荐的.NET自定义线程池,它可以有单独的实例,即每个应用程序有多个线程池?我需要一个无限的队列大小(构建一个爬虫),并且需要为我正在抓取的每个站点并行运行一个单独的线程池.
编辑:我需要尽可能快地挖掘这些网站以获取信息,为每个站点使用单独的线程池将使我能够控制在任何给定时间在每个站点上工作的线程数.(不超过2-3)
谢谢罗伊
我需要能够通过查看标题或类似的东西(不下载它)来判断链接(URL)是指向XML文件(RSS提要)还是常规HTML文件
对我有什么好建议吗?:)
谢谢!Roey
c# ×3
web-crawler ×2
hebrew ×1
html ×1
lucene ×1
performance ×1
stemming ×1
streamreader ×1
threadpool ×1
xml ×1
xmlreader ×1