首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

打造 C# 爬蟲蜘蛛程式 (二):二進制/文字檔案儲存與多線程架構

     編輯:關於C語言

檔案類型判斷與儲存策略


HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
WebResponse resp = req.GetResponse();

if (!resp.ContentType.ToLower().StartsWith("text/"))
{
    SaveBinaryFile(resp);
    return null;
}
// 文字檔案處理...

二進制檔案儲存

  1. 緩衝區 byte[1024]。
  2. convertFilename 解析 URL 產生本地路徑並建立目錄結構。
  3. 開啟 File.Create 輸出流與 GetResponseStream 輸入流。
  4. 迴圈 Read/Write 直到結束。

文字檔案儲存


using (StreamReader reader = new StreamReader(resp.GetResponseStream()))
{
    string line, buffer = "";
    while ((line = reader.ReadLine()) != null) buffer += line + "\r\n";
}
SaveTextFile(buffer);

多線程工作迴圈


while (!spider.Quit)
{
    uri = spider.ObtainWork();           // 取得下一個 URL (阻塞直到有工作)
    spider.Done.WorkerBegin();           // 通知開始
    string page = GetPage();
    if (page != null) ProcessPage(page); // 解析連結、產生新工作
    spider.Done.WorkerEnd();             // 通知結束
}

線程數量調整建議

  • 高效能機器/多核心/寬頻 → 可增加線程數。
  • 資源受限 → 過多線程反而降低吞吐量 (上下文切換、頻寬爭搶)。

DocumentWorker 封裝單一 URL 下載與解析,ObtainWork 由佇列提供,實現生產者-消費者模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved